Skip to main content

Full text of "Sixty programs for the Sinclair ZX Spectrum"

See other formats










First published 1983 by Pan Books Ltd, 

Cavaye Place, London SW10 9PG 

in association with Personal Computer News 

987654321 

©Robert Erskine, Humphrey Walwyn, Paul Stanley, Michael Bews 

ISBN 0330 28260 3 

Printed in Great Britain by 

Richard Clay (The Chaucer Press) Ltd, 

Bungay, Suffolk 


This book is sold subject to the condition that it shall not, 
by way of trade or otherwise, be lent, re-sold, 

hired out, or otherwise circulated without the publisher’s prior consent 
in any form of binding or cover other than that in which it is 
published and without a similar condition including 
this condition being imposed on the subsequent purchase 




Contents 


Minelay . 7 

Fall-Guy . 11 

Tug of War . 16 

Horse Race . 20 

Championship Boxing . 24 

Motocross . 30 

Critical Path Analysis . 34 

Chomper . 39 

Battleships . 44 

Tanx . 49 

Defend . 53 

Flying Bomb . 58 

Radio Power . 61 

Scuba . 70 

Endings . 77 

Snap . 83 

Paypackets . 87 

Newmarket . 91 

Hobday Expenses . 96 

Ambush . 104 

Numbers . 109 

Top Trainer . 115 

Biorhythms . 125 

Aben . 128 

Galaxians . 131 

Sheep Dog Trials . 135 

Picture Pairs . 139 

Dam Busters . 145 































0X0 . 

Space Traffic . 

Dam Eaters . 

Buzzy Bee . 

Heli-Bomber . 

Grand Prix . 

Giant Rats . 

Postman . 

Xmas Eve . 

Morse Tutor . 

Flying Geese . 

Wordsum . 

Asset Stripper . 

Bricklayer .. 

Dogfight . 

Evolution 1 . 

Evolution 2 . 

Evolution 3 . 

Exocet . 

Energy Field . 

Drag Racer . 

Moonlander . 

Anagrammatic . 

Stellar Run . 

Russian Roulette 

Swordsman . 

Hangman . 

Roots . 

Bulls and Cows . 

Invaders . 

Mushroom Invasion 
Countabout . 


149 

152 

156 

160 

164 

168 

173 

177 

181 

185 

190 

192 

195 

205 

208 

213 

219 

225 

231 

234 

240 

244 

247 

250 

255 

257 

262 

267 

272 

275 

280 

283 



































Introduction 


This book was born of the conviction that it was high time a 
listings collection offered real value for money. You have in your 
hands as complete a software library as can be crammed into close 
on three hundred pages. We have pulled out all the stops to offer 
you as varied, innovative and exciting selection of programs as 
possible. There are arcade action games for those of you whose 
fingers naturally twitch around the cursor control keys, tactical 
games for the more cerebrally inclined, genuinely novel games as 
well as classics of the genre, quizzes, tests of your mental agility, 
party games and a leavening of utility and educational programs. 

In short, for the price of a single cassette we’ve put together a 
collection of sixty fully-developed programs which have been 
exhaustively tested before being dumped straight to the printer. 
This ensures the accuracy of the listings, so all you have to do is to 
get your eager fingers flashing across the keyboard and faithfully 
reproduce the programs on your screen. 

A few words about the listings themselves. We have introduced 
what we hope will prove to be a useful innovation to differentiate 
the user-defined graphics from the rest of the code. Each time a 
user-defined graphic appears in a program it is printed italic 
capitals; e.g. A. This will hopefully ensure that the Earth will be 
attacked by fully-fledged aliens rather than bewildering fleets of 
capital ‘A’s! We should also point out that in order to get as many 
programs as possible into the book we have extended the line of 
the listings to forty-five characters, as opposed to the thirty-two 
characters of the Spectrum screen. This simply means that you 
should take extra care over the spaces to ensure that you get the 
displays right. 

Finally, we would like to extend our thanks to the team of 
converters and checkers without whom this project would not have 
been possible. Their selfless devotion to accuracy inspired us to 
slave over hot keyboards into the midnight hour. 

So now it’s up to you. A quick glance through the contents 
pages reveals that the Earth is being threatened by anything from 
an alien invasion fleet to a vampire cat! As usual, you are our only 
hope, so get to the keyboard and go get ’em! 




Minelay 


Minelay is a maze game in which your hero runs about collecting golden 
eggs and avoiding the deadly mines which are scattered randomly about 
the maze. A fiendish little ‘minelayer’ scuttles around the screen in hot 
pursuit. Contact with this persistent creature results in instant death. 

Here is the good news. A number of axes are dotted around the playing 
area which the player can pick up and carry around. Each axe can be • 
used both to break through maze walls and also to fend off direct attacks 
by the minelayer. 

1 RANDOMIZE : BORDER 0: PAPER 0: INK 7: CL 
S 

5 REM @ P.Stanley (21.3.83) 

10 60 SUB 9000 
15 LET hs=0 
20 GO TO 6030 
50 BEEP .1,-10 
55 LET 1i=3 

60 PRINT AT 0,lZ;"BS Hi-score "ihs 
100 PRINT AT yl,xl;" "; INK 6;AT y,x!a*: LET 
y1=y: LET xl=x 

110 LET x=x+(IN 57342=254)-(IN 57342=251): L 
ET y=y+(IN 65273=253)-(IN 64510=254) 

120 LET a=ATTR (y,x): IF SCREEN* <y,x)=" " T 

HEN GO TO 700 

122 IF a=7 THEN IF a*="C“ THEN GO TO 5000 

125 IF a=7 THEN LET y=yl: LET x=xi 
130 IF a=70 THEN BEEP .01,20: LET sc=sc+10: 
PRINT INK 7;AT 0,6;sc: IF sc/500=INT (sc/50 
0) THEN PRINT AT 0,12+li; FLASH 1 ;"B“: FOR q 
=1 TO 5: BEEP .2,-30: NEXT g: PRINT AT 0,12+1 
LET 1 i = 1 i +1 

140 IF a=5 THEN GO TO 6000 

150 IF a=63 THEN BEEP .1,10: LET a*="C" 

700 PRINT AT my,mx >“ ”: IF RND >sk THEN PRIN 
T AT myl ,mxlINK 5; "A" 

705 LET myl=my: LET mxl=mx 

710 LET my=my+(.5 AND my<y)-(.5 AND my>y): L 
ET mx=inx+(.5 AND mx<x)-(.5 AND mx>x) 

715 IF ATTR (my,mx>=6 THEN GO TO 6000 



8 Minelay 


720 PRINT AT my, rax; INK 5; BRIGHT 
940 IF RNDC.2 THEN PRIhfT AT RND*18 + 2, RND*28 
+15 INK 6; BRIGHT 1;ӣ": IF RND>.9 THEN PRIN 
T INK 4! BRIGHT 15 AT RND*13 + 2,RND*28+1; " 6 " 
999 GO TO 100 

5000 IF y=l OR y=21 OR x=0 OR x=30 THEN GO T 
O 125 

5005 FOR -f =50 TO 0 STEP -5: BEEP .02,-f: NEXT 
f 

5010 LET a %="B“ 

5030 GO TO 130 

5500 PRINT AT 0,12+li;" ": PRINT AT y,x;“ ‘: 

LET y=2: LET x=l 

5600 LET my=INT (RND*11)+10: LET mx=INT (RND* 
13)+12: GO TO 100 

6000 PRINT AT my,rax;” *: LET my=INT (RND*11)+ 
10: LET mx=(RND*13)+12: LET myl=my: LET mxl=m 
x: IF a$="(7 n THEN LET aFOR f=0 TO 40 
STEP 5: BEEP .04,T: NEXT -f : GO TO 700 
6005 FRINT AT yl,xl; M ": FOR f=l TO 7: FOR g= 
7 TO 0 STEP -l: PRINT INK g;*AT y,x5 ,, ff" : BEEP 
• 02, g*-f : NEXT g: NEXT -f 
6007 LET 1i=li-1: IF 1i<>0 THEN GO TO 5500 
6010 FOR g=0 TO 60: NEXT g 

6020 CLS : PRINT AT 5,8; INVERSE 1; H G A M E 
OVER” 

6025 PRINT AT 8,9; INK 5; BRIGHT 1;“You score 
d '*; sc 

6026 IF sc >hs THEN LET hs=sc: PRINT Well 

done- A new high-score!!": GO TO 6030 

6027 PRINT The high-score is ";hs 

6030 PRINT INK 6’’’’" Press 1 -for a hard ga 
me, or 2 -for an easier game. " 

6040 IF INKEY$<>"1” AND INKEY*<>"2" THEN GO 
TO 6040 

6045 LET sk =(.7 AND INKEY*="1 H >+<.85 AND INKE 


Y$=”2") 

6050 CLS 

7000 FOR -f = l TO 21: PRINT AT -f , 0; “A" ; AT -f,30; 
: NEXT -f 

7010 FOR -f = l TO 29: PRINT AT 1, -f ; "A" 5 AT 21,-f; 
“A": NEXT -f 

7020 FOR g=l TO (7 AND sk=.85)+<14 AND sk=.7) 

: LET s=RND*28: LET -f = s + RND*10: LET x = INT (RN 




Minelay 9 


D*9)*2+l: IF +>29 THEN LET +=29 
7030 FOR y = s TO + : PRINT AT x^;"^" 

7040 NEXT y 

7050 LET s=RND*17+2: LET +=s+RND*10: LET x=IN 
T (RND*14>*2+2: IF +>20 THEN LET +=20 
7060 FOR y=s TO +: PRINT AT y,xi H A ": NEXT y: 
NEXT g 

7390 FOR +=1 TO 20 

7400 LET y=RND*13+2: LET x=RND*23+l 
7410 IF SCREEN* <y,x)="" THEN GO TO 7400 
7420 PRINT BRIGHT 1; INK 6;AT y,x5 u f": NEXT 
+ 

7500 FOR +=1 TO 10 

7510 LET y=RND*13+2: LET x=RND*23+l 
7520 IF SCREEN* <y,x> = '' " THEN GO TO 7510 
7540 PRINT INK 5; AT y,x’,"F": NEXT + 

7550 FOR +=1 TO 5: PRINT AT RND*13+2,RND*28+1 
; INK 4; BRIGHT 1; "G": NEXT + 

7800 LET y=2: LET x=l: LET yl=y: LET xl=x: LE 
T a*="£" 

7340 LET my=INT <RND*11)+10: LET mx=INT (RND* 
13)+12: LET myl=my: LET mxl=mx 
7350 LET sc=0: PRINT AT 0,0;"Score ";sc 
7999 GO TO 50 

9000 FOR +=USR "a" TO USR "s u ^7: READ g: POKE 
+,g: NEXT + 

9010 DATA 24,36,66,153,153,66,36,24,28,28,73, 
62,3,23,20,54 

9020 DATA 220,220,73,126,72,92,20,54,195,36,2 
4,36, 126,90, 129 ,'0 

9030 DATA 0,0,0,12,62,126,62,12,0,0,8,73,42,2 
8,62,127 

9040 DATA 4,14,6,12,24,48,96,0 

9500 PRINT INK 0;AT 0,0;“ _ _ _ _ _ _ 


9600 FOR +=0 TO 4: PRINT INK 5;AT +,0; BRIGH 
T 1; "D “: FOR g=l TO 31 

9610 PRINT AT +,g-lj OVER 1; INK 0; BRIGHT 1; 
"D" j INK 55*0" 

9620 IF SCREEN* <+,g-l)="_" THEN PRINT INK 
2; PAPER 7!AT +,g-l \"F" 






10 Minelay 


9630 BEEP . 04 , (g + -f ) /3 

9640 NEXT q: PRINT AT -f , 31 ! " ” : NEXT -f 

9645 PLOT 16,173: DRAW 3,-10: DRAW 4,10: P 
30,173: DRAW 7,-23 

9650 PRINT ’"Move about the maze picking u 
qolden eggs, avoiding the mines 6c also the 
ne-1ayer." 

9700 PRINT INK 6’"I-f you pick up an axe y 
can destroy the maze walls, mines, and 
e mine-1ayer.* 

9750 PRINT ’“You begin with 3 liyes, but a 
extra li-fe is given every 500 points." 

9800 PRINT INK 6’" Q.UP Z. 

DOWN"’ INK 5’” I.LEFT P....RIGHT" 

9900 INPUT "Press ENTER to start..."!a* 

9910 IF INKEY$="" THEN GO TO 9910 
9920 CLS 
9999 RETURN 






11 

Fall Guy 


This is a game for two, in which each player directs a small figure down a 
vertical maze so that it can drop through a hole in the moving floor at the- 
bottom. The figure is manoeuvred through the maze by directing 
markers up and down the outer walls and shifting horizontal sections of 
the maze to the left or right, allowing the figures to drop through to lower 
levels. The trick is to alter the internal pattern of the maze in order to 
move your own figure without at the same time opening up advantages 
for the opposition. 

1 BORDER 0: PAPER 0: INK 7: CLS 

2 REM @ PAUL STANLEY 1983 

5 GO SUB 9000 

15 INPUT "Please enter your names. F 

irst, the player on the le-ft:" , bS: INPUT “And 
now the player on the right:" ’ cS 

17 PRINT AT 10,10;"PLEASE WAIT" 

20 GO SUE 8000 

30 GO SUB 7000 

40 LET y=INT <RND*19)+2: LET yl=INT <RND*19 
) +2 

42 LET g=7: LET gl=24: LET -f = i: LET -fl = l 

44 LET wS=" 4444444444444444444" 

45 FOR i = 10 TO 30: EEEP .07, i: NEXT i 

50 PRINT INK 3;AT y,4;" C " ; INK 6;AT yl,27; 

„ D » 

60 PRINT BRIGHT 1; INK 3; AT 4,g ;"B"; INK 6 
;AT 41, g 1; "B" 

70 IF SCREENS (-f + l,g)=" " THEN PRINT AT -f , 

g; " LET 4=4 + 1: PRINT AT 4,g! BRIGHT 1; INK 
3BEEP .01,10 

73 IF SCREENS (4+1,g)="0" THEN FOR i=3 TO 
9: BEEP .01,1*5: NEXT i: PRINT AT 4,g;" ”! BR 

IGHT l; INK 6 j AT 1,7; "S": LET 4 = 1: LET, g=7 

75 IF SCREENS (4 1 + 1 , gl 5 = “ " THEN PPvINT AT 

•f 1 , g 1 5 " ": LET 41=41 + 1: PRINT AT 41,gl; BRIGH 

T 1! INK BEEP .01,20 

76 IF SCREENS <41+1,gl)="0" THEN FOR i=3 T 
O 9: EEEP .0i,i*5: NEXT i: PRINT AT 4i,gl; H " 
; BRIGHT l; INK 6;AT 1,24 ;"B": LET 41=1: LET 




12 Fall Guy 


g 1 = 24 


77 IF f =21 OR -f 1 =21 THEN GO TO 5000 
80 IF IN 63486=253 AND y>2 THEN PRINT AT y 
45" ": LET v=y- 1 

85 IF IN 61438=254 AND yl>2 THEN PRINT AT 
•1,27; ■' LET yl=y 1 - 1 

90 IF IN 65022=254 AND y<20*THEN PRINT AT 
',4; " LET y=y+1 

95 IF IN 49150=253 AND yl<20 THEN PRINT AT 
yl,27;" ": LET yl=yl+l 


100 IF IN 64510=254 THEN 
105 IF IN 57342=253 THEN 
110 IF IN 64510=253 THEN 
115 IF IN 57342=254 THEN 
200 LET w$= ? i$ (2 TO )+w*(l) 
NK 4; 


GO SUB 1000 
GO SUB 2000 
GO SUB 1100 
GO SUB 2100 
: PRINT AT 21,6 


999 GO TO 50 

1000 LET i =>'-1 : IF v = -f THEN IF g = 6 THEN IF 
a$(i,2)<>" " THEN RETURN 

1001 IF y=fl THEN IF gl=6 THEN IF a$(i,2)<> 

” ” THEN RETURN 

1002 LET a$(i)=a*<i ,2 TO )+a$(i,l) 

1005 IF y = -f THEN IF a$<i,g-5><>” " THEN LET 

9 = 9-1 

1007 IF y=-f 1 THEN IF a$ ( i , g 1 -5) < > ” " THEN L 

ET gl=gi-1 

1010 PRINT AT y,6;a*(i): RETURN 

1100 LET i =y-1 : IF y = -f THEN IF g = 25 THEN IF 

a* <i,19)< >" " THEN RETURN 

1101 IF y = -fl THEN IF gl=25 THEN IF a$(i,19) 

<>" " THEN RETURN 

1102 LET a$(i)= a* <i,20)+a$(i, TO 19) 

1105 IF y=-f THEN IF a$ < i , g-5) < > “ " THEN LET 

9=9+1 

1107 IF y=-f 1 THEN IF a* ( i , gl-5) < >" ” THEN L 

ET g1=g1+1 

1110 PRINT AT y,65a*<i): RETURN 

2000 LET i=yl-i: IF yl=-fl THEN IF gl=6 THEN 

IF a$(i,2)< >” " THEN RETURN 

2001 IF yi=f THEN IF g=6 THEN IF a$ti,2)<>' 
" THEN RETURN 

2002 LET a$<i)=a$<i,2 TO )+a$(i,lf 

2005 IF yl=-f 1 THEN IF a* ( i , g 1-5>'.< > " " THEN 

LET g1= g1-1 





Fall Guy 


13 


2007 IF yi=+ THEN IF a$(i,g-5)<>" '■ THEN LE 

T g=g-l 

2010 PRINT AT y 1,6;a* <i): RETURN 

2100 LET i =y 1 - 1 : IF y 1=+ 1 THEN IF gl=25 THEN 

IF s.$(i,19)<>" ” THEN RETURN 

2101 IF yl= + THEN IF g=25 THEN IF a$(i,19)< 

>" " THEN RETURN 

2102 LET a$(i)=a*(i,20)+a$<i, TO 19) 

2105 IF yl=+ 1 THEN IF a*<i,gl-5)<>" " THEN 

LET gl=gl+l 

2107 IF y 1 =-f THEN IF a*(i,g-5)<>" " THEN LE 

T g=g+l 

2110 PRINT AT y1,6ia$ <i) : RETURN 

5000 IF + = 21 THEN LET y = +: LET x = g: LET ink = 

3 

5002 IF + 1 =21 THEN LET y=-f 1 : LET x = gl : LET i 
nk = 6 

5005 LET v&= u B£"l LET c = l : FOR g=0 TO 16: PRI 
NT AT y,x > BRIGHT 1; INK ink;w$(c): LET c=<c = 
2) + (2 AND c = l): FOR 1 = 1 TO 3: BEEP .02, i: NEX 
T 1: NEXT g 

5006 FOR -f=0 TO 31: PRINT AT 18, + ;" " ; AT 19, + 

; "5 AT 20, + ; - " ; AT 21 , -f; INK 2; " ": NEXT + 

5007 FOR i =2 TO 28 STEP 2: PRINT INK 5;AT 19 

,f-li“ ";AT 2BEEP .1,10: PAUSE 5: PR 
INT AT 20, f ; " INK 5; AT 19, -f + 1 ; ӣ 11 : BEEP .1 

,20: PAUSE 5: NEXT -f 

5010 CLS : LET wi£=(b$ AND -f=21) + (c$ AND +1=21 
): IF +=21 AND +1=21 THEN GO TO 5050 
5020 PRINT INK 4;AT 5,0;"Well done 
5030 PRINT INK 6’’"You were the best Fall Gu 

5040 GO TO 5100 

5050 PRINT INK 4;AT 5,0;"The result was a dr 
aw."’ INK 6’’"You both did equally well." 

5100 PRINT ’’"Press ""X" ,, to quit the program 
.“’ INK 5’"Press ""1"" tor the same course."’ 

INK 4’"Press ”"2"" +or a new course." 

5110 IF INKEY$="x" THEN STOP 

5120 IF INKEY*="1" THEN GO TO 5500 

5130 IF INKEY*="2" THEN CLS : PRINT AT 10,10 

;"PLEASE WAIT": GO TO 20 

5140 60 TO 5110 

5500 CLS : FOR +=1 TO 19: LET i=INT <RND*20)+ 




14 Fall Guy 


l: LET a$(f)=a$(+,i TO )+a*<-f, TO i ) : NEXT -f 
5600 GO TO 30 

7000 CLS : FOR -f = l TO 19: PRINT AT -f + l,6;a*(f 
) : NEXT -f 

7010 FOR -f =2 TO 21: PRINT INK 2; PAPER 4; AT 
-f ,5; “A" ;AT 4,26i"A“: NEXT f 

7020 FOR -f =5 TO 26: PRINT INK 2; PAPER 4; AT 
1 , -f 5 "4" : NEXT f 

7030 PRINT AT 1,7;" " ; AT 1,24;" "jAT 21,16;" 

7040 PRINT ERIGHT 1; INK 3;AT 0,0;b$i INK 6; 
AT 0,(32-LEN c*);c* 

7999 RETURN 

80.00 DIM a* (19,2.0): FOR -f = l TO 19 

8010 FOR g=l TO 20: LET a*<f,g>=" ”: IF RND >. 

5 THEN LET a* (-f , g ) = " A ” 

8015 IF RND< . 02 THEN LET a* (-f , g ) = " O " 

8020 NEXT g: NEXT -f 
8090 RETURN 

9.000 FOR -f=:USR "a" TO USR "e”+7: READ g: POKE 
-f , g : NEXT -f 

9010 DATA 170,85,17.0,35,170,85,170,35 

9.020 DATA 24,24,255,60,60,90,66, 195 

9030 DATA 8,12,25.0,137,250,12,3,0 

9040 DATA 16,48,95,147,95,48,16,0 

9.050 DATA 153,219, 126,60,60, 126,219, 129 

9500 FRINT INK 0;AT 17,0;" aaa a a a 



9540 FOR -f =3 TO 7: FOR g=0 TO 31 
9550 IF SCREEN* (-f + 14, g) = "a" THEN PRINT INK 
-f ; AT -f+ 14, g i "B" 

9555 BEEP . 06,-f*2 + g 
9560 NEXT g: NEXT -f 

9570 FOR -f = l TO 17: POKE 23692,255: PRINT AT 
21,31;“ ": FOR g = 2.0 TO 30: BEEP . 005, g: NEXT 

g: NEXT i 

9530 PRINT INK 4;AT 6,0;"A Game For 2 Player 
s Who Have TaGuide Their Man To The Bottom Q-f 
The Grid Be-fore Their Opponent. " 

9598 PRINT INK 5’"Avoid The Mines (0), For L 
and i n gOn One 0-f These Will Send You Right T 



Fall Guy 15 


o The Top Again." 

9600 PRINT INK 6’ "CONTROLS: UP 'DOWN LEFT 
RIGHT" 

9610 PRINT ’"PLAYER 1: 2 A Q W" 

9620 PRINT INK 4’"PLAYER 2: 0 L O 

P" 

9630 PRINT ’"Press Any Key To Continue....": 
PAUSE 0 

9640 FOR f=l TO 20: POKE 23692,255: PRINT AT 
21,315" ": FOR g=20 TO 30: BEEP .005,g: NEXT 

g: NEXT -f 
9650 RETURN 



16 


Tug-of-War 


Tug-of-War is a two player game consisting of a canyon with a rope 
stretched across the top, held by a team of three figures on either side. A 
small UFO flies overhead and each player takes turns in dropping a 
parachute from it, attempting to land on a target which appears lower 
down the screen in a random position. Every time a parachutist hits the 
target, the opposing team is pulled further towards the edge of the 
canyon and if a man topples over the precipice, the team is weakened. 

The winner is the player who succeeds in pulling all the opposing team 
over the edge of the canyon. 

1 BORDER 0: PAPER 0: INK 7: CLS 
5 GO SUB 9000 
10 GO SUE 8000 
20 GO SUB 7000 

1000 PRINT AT 14,t!" LET t=INT <RND#28)+2: 

PRINT AT 14,t; " " 

1050 FOR *=0 TO 30: PRINT AT 0,4;" I " 

1060 IF INKEY$="a" THEN GO TO 2000 

1065 BEEP ta,25 

1070 NEXT *: 60 TO 3000 

2000 FOR g=0 TO 14 

2010 PRINT INK 4; AT g , -f + 1 ; ” J" 

2020 BEEP .05,g 

2025 PRINT AT g , * + 1 ; ” " 

2030 NEXT g 

2040 IF 1 +lOt THEN GO TO 3000 

2100 LET #a=xa-i: LET xb=xb-l: FOR *=20 TO 30 
: BEEP .01,*: NEXT * 

2110 PRINT AT 14,t; " " 

2200 PRINT INK 2;AT 16,xa;a$C1) 5 " ” ; AT 17,xa 
ia$(2)i" "5 INK 6;AT 16,xbib$(1);" “;AT 17,xb 
J b*(2) 5 * ” 

2210 PLOT (xa+LEN a$(l))#8,4l: DRAW ixb-xa-LE 
N a$<l))*8-l,0 

2220 IF ATTR <18,xb)=3 THEN GO TO 3.000 
2225 LET u=16: PRINT AT 16,18;" " ! AT 17,18;” 

“: GO SUB 6000 

2230 IF tb=.02 THEN DIM b$(2,4):.LET b*(1)=" 




Tug-of-War 17 


EFEF ": LET b$ C 2 )="GH6H" 

2232 IF tb=. 002 THEN DIM b$(2,2): LET b$(1)= 
"EF'\ LET b*(2>=“<Stf" 

2233 IF tb=.00.02 THEN LET w=l : GO TO 6500 
2235 LET tb=tb/10 

2237 LET xb=xb+2 

2240 PRINT INK 2;AT 16,xaia$(1 I i " " ; AT 17, x 

a;< 2) ; " " ; INK 6;AT 16,xb5b*(1);“ "iAT 17 
,xb;b$(2); M 

2250 PLOT (xa+LEN a*<1J)*8,41: DRAW (xb-xa-LE 
N a$(l ))*8-1,0 
2260 GO TO 3000 

3000 PRINT AT 14,t;” LET t=INT (RND*28)+2: 
PRINT AT 14,t5" ” 

3050 FOR +=30 TO 0 STEP -1: PRINT AT 0,+;"/ " 

3060 IF INKEY$=“I" THEN GO TO 4000 

3065 BEEP tb,25 

3070 NEXT -f: GO TO 1000 

4000 FOR g=0 TO 14 

4010 PRINT INK 5; AT g,-f;'V' 

4020 BEEP .05,g 
4025 PRINT AT g,f;" ” 

4030 NEXT g 

4040 IF fOt THEN GO TO 1000 

4100 LET xa=xa+l: LET xb=xb+l: FOR -f=20 TO 30 
: BEEP .01,-f: NEXT -f 

4200 PRINT INK 2;AT 16,xa-l5" "Ja*<l);AT 17, 
xa-15“ " 5 a$(2); INK 6;AT 16,xb-li" "j b$(1 ) ;AT 

17,xb-i;" ";b*(2) 

4210 PLOT (xa+LEN a$(1))*3,41: DRAW (xb-xa-LE 
N a*(l>)*8-1,0 

4220 IF ATTR (18,xa+LEN a$(l)-l)=3 THEN GO T 
O 1000 

4225 LET u=14: PRINT AT 16,13;" ";AT 17,13;" 

"; GO SUB 6000 

4230 IF ta=.02 THEN DIM a*<2,4): LET a$(l)=" 
ABAB" LET a$ (2) = " CDCD" 

4232 IF t.a=.002 THEN DIM a$(2,2): LET a*(1)= 
"AB": LET a$(2 )="CD” 

4233 IF ta=.0002 THEN LET w=2: GO TO 6500 
4235 LET ta=ta/10 

4240 PRINT INK 2;AT 16,xa;a$(1);AT 17,xa!a$( 
2); INK 6;AT 16,xb;b$(1);AT 17,xb;b$(2> 

4250 PLOT (xa+LEN a$!l))*8,4l: DRAW (xb-xa-LE 



18 Tug-of-War 


N a$(i)>*8-1,0 
■4260 GO TO 1000 

6000 FOR 4 = 16 TO 20: PRINT INK 5;AT + , u.; “/U “ 

; INK 3;AT 4+1, u; "MN" 

6010 BEEP .1,10-4 

6020 PRINT AT F,u;“ “ ; AT 4 + 1 , u 5 " 

6025 NEXT 4 
6030 RETURN 

6500 FOR 4=0 TO 7: PRINT AT 2,2; INK 4;“WELL 
DONE PLAYER “;W;“! YOU WON!": FOR g=l TO 3: B 
EEP .04,g*4: NEXT g: NEXT 4 

6600 PRINT AT 5,2; INK 5;‘PRESS ANY KEY TO PL 
AY AGAIN.“ 

6700 PAUSE 0: PAUSE 0: CLS : GO TO 20 

7000 INK 3: FOR 4=0 TO 31: PLOT 0,4: DRAW 106 

+ RND*5,0: NEXT 4 

7010 FOR 4=0 TO 31: PLOT 255,4: DRAW -<106+RN 
D*5),0: NEXT 4 

7012 PLOT 0,31: DRAW 111,0: PLOT 255,31: DRAW 
- 110,0 
7015 INK 7 

7017 DIM aS(2,6): DIM bS<2,6) 

7020 LET as(1)=" ABABAB": LET a$(2)=" CDCDCD ": 
LET bS(1) =”£F£F£F ": LET b*<2)= "GHGHGH" 

7030 LET xa=7: LET xb=l? 

7040 PRINT INK 2;AT 16,xa;a$(1)iAT 17,xa|a$( 
2); INK 6;AT 16,xb;bs(1);AT 17,xb;b$(2) 

7050 PLOT < xa + LEN aS(l))*8,41: DRAW (xb-xa-LE 
N aS(1))*3-1,0 

7060 LET ta=.02: LET tb=ta: LET t=0 
7300 RETURN 

3000 FOR 4 =USR “a" TO USR "n“+7: READ g: POKE 
4,g: NEXT 4 

3010 DATA 24,52,62,60,24,31,255,15,0,0,0,0,0, 
248,255,240,15,7,7,3,0,0,0,0,0,123,192,224,11 
2,24,12,7 

3020 DATA 0,0,0,0,0,31,255,15,24,44,124,60,24 
,243,255,240,0,1,3,7,14,24,48,224,240,224,224 
,192,0,0,0,0 

8030 DATA 0,129,66,36,102,255,126,60,16,124,2 
54,0,16,56,16,40 

3040 DATA 1,195,101,55,27,15,7,3,123,195,166, 
236,152,240,224,192,3,3,3,7,14,28,134,112,192 



Tug-of-War 19 


,192, 192,224,112,56,29,14 
8100 RETURN 

9000 PRINT " TUG_OF_WAR" 

9005 PRINT INK 3’" BY PAUL S T A N L 
E Y 

9006 PLOT 0,151: DRAW 255,0: DRAW 0,24: DRAW 
-255,0: DRAW 0,-24 

9010 PRINT INK 6’"A simple game Tor 2 player 
s who have to win at tug-of-war, not by stre 
ngth, bat by reactions." 

9020 PRINT INK 4’"A UFO will Ply across the 
top oPthe screen and a target will appear 
at the bottom. Player 1 can parachute out on 
to the target by pressing ""A”", and 

player 2 with "”L. 

9030 PRINT INK 6* "IP the fJa.r ac hut i st lands o 
n the target you will pull the other team. I 
P any men Pall down the canyon that team wil 
1 Pina it harder to win" 

9040 PRINT INVERSE 1;AT 21,3;"PRESS ANY KEY 
TO START": F4USE 0: CLS : RANDOMIZE : RETURN 




20 


Horse Race 


Horse race is a racing and betting game for any number of players in 
which six horses race across the screen. At the beginning of the game you 
can choose how many races there will be at the meeting. 

Before the start of each race the betting form is displayed, complete with 
the tipsters odds on each runner. The odds are a fairly accurate reflection 
of each horse’s potential. 

Starting with £200, each player may bet on one horse in each race and the 
winner is the player who ends up with the largest amount of money at the 
end of the meeting. If you want the rules to allow cheating then players 
who lose all their money may have the option of accepting the offer of an 
additional £50, otherwise they are out of the game. 

1 RANDOMIZE : BORDER 7: PAPER 7: INK 0: CL 
S : GO SUB 700.0: CLS 

Z INPUT "How many races would you like t 
here to be at this meeting? races 

3 INPUT "How many punters are there?" , a 

4 DIM p(a): FOR c=l TO a 

5 LET p (c ) =2.00 

6 NEXT c 

1.0 GO SUE 9000 
20 CLS : GO SUB 1999 
100 FOR c=2 TO 12 STEF 2 

105 PRINT INK c/2; AT c,0;c/2;" A" 

106 PRINT AT c-1,2 j "■" 

107 NEXT c 

108 PLOT 251,170: DRAW 0,-102 

109 PRINT AT 13,2;PRINT AT 0,31; OVER 1 

110 LET a$= "FINISH 11 1 FOR c = i TO 6: PRINT AT 
13+c,31ia$(c): NEXT c 

115 FOR c = 163 TO. 67 STEP -16: PLOT 24,c: DRA 
W 227,0: NEXT c 
120 30 SUB 1000 

1000 BEEP .5,0: PRINT AT 14,0;“READY": BEEP . 
5,6: PRINT AT 14,0;"STEADY": BEEP .5,12: PRIN 
T AT 14,0;"GO ”: BEEP .5,18: PRINT AT 14,0 



Horse Race 21 


1001 LET ge=0: DIM x <6) : FOR c=l TO 6: LET x( 
c)=2: NEXT c 

1002 FOR c — 1 TO 6 

1004 BEEP .03,-20: BEEP .03,-30 

1005 LET x(c)=x(c) + (-f < c ) = 1 AND RND< . 8) + (-f ( c ) = 
2 AND RND< . 77) + C-f <c> =4 AND RND< . 74) + (-Me) =S A 
ND RND<.71>+<f<c)=16 AND RND< . 68) + (-f < c ) =32 AN 
D RNDC.65) 

1006 PRINT INK c;AT c#2,x(c)-1;" 4" 

1008 IF x (c)=31 THEN LET ge=i 

1009 BEEP .03,-20: BEEP .03,-30 
1015 NEXT c 

1020 IF ge=l THEN GO TO 1050 
1040 GO TO 1002 

1050 DIM h<6): LET manv=0: FOR c = l TO 6 

1052 IF x(c)=31 THEN LET many=many+l: LET h( 

1053 NEXT c 

1054 IF many=l THEN LET winner=h(l): GO TO 1 
090 

1055 PRINT AT 20,0;"There is a photo-finish b 

etween these horses: 11 

1056 PRINT AT 21,15; h < 1) ;'■ n ;h<2);" 

1057 IF many=3 THEN PRINT ;h(3); 

1058 IF many=4 THEN PRINT ; 11 " ; h (4 ) 

1060 FOR c=l TO 300 

1065 NEXT c 

1067 LET er =INT (RND*4)+1 

1070 LET winner=h(er) 

1071 IF winner =0 THEN GO TO 1067 

1075 IF RNB<.33 THEN LET g$=“a short head": 
GO TO 1079 

1076 IF RND<.4 THEN LET g$="a neck": GO TO 1 
079 

1077 LET g$=“1 length" 

1079 PRINT AT 20,0!" 

1080 PRINT AT 20,1;"The winner is "iwinneri” 
who won by”: PRINT AT 21,l!g* 

1081 PAUSE 130 

1082 CLS 

1085 GO TO 1100 

1090 PRINT AT 20,1;"The winner is “iwinneri" 



22 Horse Race 


who won by ": PRINT ” ";INT <RND*3>+25" lengt 
hs. " 

3095 PAUSE 130: CLS 

1100 FOR r=l TO a 

1101 IF p(r)=0 THEN LET r=r+l: GO TO (1101 A 
ND r<a+1) + (1130 AND r = a+l) 

1105 IF e(r)=winner THEN LET p ( r)=p(r)+b<r)* 
■f (winner ) : GO TO 1115 
1110 LET p < r ) =p (p)-b('r) 

1115 IF p(r)< =0 THEN GO TO 8000 
3117 IF efrlOwi nner THEN GO TO 1125 
1120 CLS : PRINT AT 10,4;"Well done punter 
r; 11 ! ,,,,, Your horse won and you now have £" ; p ( 

r): PAUSE 0: GO TO 1130 

1125 CLS : PRINT AT 10,4;"Bad luck punter “ ; r 
i" !"Your horse did not win, and so you no 
w have £";p ( r) : PAUSE 0 
1130 NEXT r 
1150 GO TO 20 

1999 LET races=races-l: IF rares=-l THEN GO 
TO 6000 

2000 DIM i<6): FOR c=l TO 6: LET f(c)=2'<INT 
<RND*6 ;!: NEXT c 

2020 PRINT "The tipsters reckon the betting:" 

2025 FOR c=l TO 6: PRINT INK c; PAPER (7 AND 

c < 4 J + (0 AND c >3) 5 AT 2*c,2j“HORSE "5c{ “ ”5 

-f (c) ; ■*: 1 “ 

2026 IF -Mc)=i THEN PRINT INK c; PAPER <0 A 
ND c >3) + <7 AND c<4);AT 2*c,13; "EVENS" 

2029 NEXT c 

2030 DIN e (a) : DIM b(a>: FOR -f = l TO a 

2031 IF p(-f)=0 THEN LET -f=-f + i: GO TO (2031 A 
ND i <a+l ) + (2050 AND -t=a+l) 

2032 PRINT AT 14,1;"Punter "; i ; " :": PRINT ’" 

You have £ 1 ; p <-f ) ; " . " : PRINT "How much . 

would you like to bet?" 

2033 INPUT b (-f ) : IF b(-f)>p(-f) THEN GO TO 203 
3 

2034 IF b(-f JOINT (b (-f ) ) THEN GO TO 2033 

2035 PRINT ’"On which horse is this to be 
placed?" 

2036 INPUT e(-f) 

2037 IF e (-f ) < 1 OR e(-F3>6 THEN GO TO 2036 

2038 PRINT AT 17,0;" 



Horse Race 23 


2039 PRINT AT 19,0;" 

2040 NEXT f 

2050 CLS : RETURN 

6000 PRINT "THE MEETING IS NOW FINISHED" 

6010 FOR f = l TO a 

6015 IF p(f>=0 THEN LET +=++1: GO TO (6015 A 
ND -f <a+l) + (6040 AND f=a+l) 

6020 PRINT ’"Punter " ; -f; “ -finishes with £";p( 
f ) 

6030 NEXT -f 

6040 PRINT INVERSE 1;’"Press any key to play 
again. ' : PAUSE 0: RUN 
7000 PRINT ’’” I ■ ■■■ ■■■ ■■■ ■■■ 

■■■■■■a ■ ■■■ ■ ■ 

■■■ ■■■ ■■ ■■■■■■ ■ ■ 

■ ■ ■■■ ■ ■ in ■■■’ 

7010 PR IN’" ’ ’ SSI ■ HI ■■■ 

I I I S ■ ■ Ml ■ 

» ■ II ■■■■■■ 

■ III HI HI" 

7020 PRINT ’’ A gambling game -for the whole 

-f am i 1 y ” ’ 5 " @ Pan 1 Stanley” 

: PAUSE 300: RETURN 

8000 CLS : PRINT AT 5,0;"Tut Tut! Punter ";r; 

”, you have": PRINT "run out o-f money.” 

8005 PRINT : PRINT "I must therefore not let 
you betany more." 

8010 PRINT ’"However, if your rules are to 
allow cheating, if you press "; INVERSE l;"C” 
;: PRINT Iwill give you £50 more." 

8020 PRINT "Otherwise press "; INVERSE 1;"X"; 
INVERSE 0; ' and I will cancel you from th 

8030 IF INKEY*="x“ OR INKEY*="X" THEN LET p( 
r)=0: GO TO 3050 

8040 IF INKEY*="c" OR INKEY*="C" THEN LET p( 

r)=50: GO TO 8050 

8045 GO TO 8030 

3050 CLS : GO TO 1130 

9000 FOR c=USR "a" TO USR "a"+7: READ v: POKE 
c,v: NEXT c 

9001 DATA 16,BIN 00011011,18,254,62,BIN 01100 
110,BIN 10101010,34 

9999 RETURN 










24 


Championship Boxing 


Although we say it ourselves, this program is very close to being a master¬ 
piece. Let’s face it, you’re never going to make it into the ring, but the 
hours you spend keying-in programs amount to a great deal of repressed 
aggression. So here’s your chance to take on the boxing champions of the 
world without stirring from your armchair. The program offers you a 
bird’s eye view of a boxing ring and the opportunity to go three rounds 
with an opponent of your choice. You only score points if you manage to 
connect with the head, and a KO is possible if your strategy’s slick 
enough. 

1 BORDER 5: PAPER 6: INK 0: CLS 

2 REM @ P.STANLEY 

5 LET sl=0: LET s2 = sl 

8 GO SUB 7000 
10 GO SUB 9000 
15 LET round=l 
20 GO SUB 9500 
30 GO SUB 9550 

62 PRINT AT 17,2iround 

63 BEEP .25,0: BEEP .25,0 

65 LET y=2: LET x=7: LET yl = y: LET xl = x 
70 LET g=23: LET -f = 17: LET -fl=-f: LET gl=g 
90 LET tm=3: LET ts=2 
95 LET e=0 

100 PRINT AT y1,x15 " "5 AT yl+l,xl5" "5 AT yl 

+ 2,xl5 ” "i INK 2 5 AT y,x; “AC "i PAPER 0;AT y+1 

,x; "D"; PAPER 6 j AT y + 2,xj " EG ”: LET yl=y: LET 

xl = x 

120 PRINT AT -f 1 , g 1 i " H ;AT -f 1 + 1 , g 1 + 1 5 " "|AT 
*1+2,gl;" "iAT -f , g; "HI" 5 PAPER 7;AT *+1,8+15 
" D PAPER 65 AT * + 2 , g i "JK " : LET LET gl = 

3 

130 LET ts=ts-2: IF ts=0 THEN LET tm=tm-l: 
LET ts=60: IF tm=-1 THEN GO TO 8500 
150 PRINT AT 17,275tmi"0" AND ts<10)jts 
400 IF IN 64510=254 THEN GO SUB 1000 
410 IF IN 57342=254 THEN GO SUB 1100 
450 IF g=x+l THEN IF RND>sU THEN GO SUB 20 
00 




Championship Boxing 25 


500 LET y=y +(IN 61438=239 AND y<17)-(IN 6143 
8=247 AND y>2) 

510 LET x = x +(IN 61438=251 AND x<22)-(IN 6348 
6=239 AND x>7> 

550 LET -f =-f + I NT <RND*2.5)-INT < RND*2.5) + < -f < y 
) - (f >y) 

553 IF -f < 2 THEN LET -f=2 
555 IF -f > 17 THEN LET -f = 17 

560 LET g=g+INT <RND#2.5)-INT <RND*2.5)+<g<x 
+ 2)-(g > x + 2) 

563 IF g < x +1 THEN LET g=x+l 
565 IF g >23 THEN LET g = 23 
570 IF NOT e THEN IF x>20 THEN LET e=l 
580 IF e THEN LET e=e-(e-l AND x<20)+l: IF 
e=10 THEN 60 SUB 3000 
690 BEEP .01,-20 
700 GO TO 100 

1000 PRINT INK 2;AT y,x+15 "BC “: BEEP .1,20 
1010 PRINT INK 2; AT y,x + l;"C ■ 

1020 IF y=-f+1 AND x=g-i THEN LET sl=sl+l: BE 
EP .04,0: PRINT AT 8,2;sl 
1030 IF sl=k2 THEN GO TO 6000 
1090 RETURN 

1100 PRINT INK 2;AT y+2,x+1; "FG ": BEEP .1,20 
1110 PRINT INK 2; AT y+2,x + l; ,, <S ” 

1120 IF >'=-f -1 AND x=g-1 THEN LET sl=sl + l: BE 
EP .04,0: PRINT AT 8,25sl 
1130 IF sl=k2 THEN GO TO 6000 
1190 RETURN 

2000 IF f<y THEN GO TO 2100 

2010 PRINT AT -f , g- 1; " HB " : BEEP .1,30 

2020 PRINT AT +,g-l;" H" 

2030 IF i =y +1 THEN LET s2=s2+l: BEEP .04,0: 
PRINT AT 3,28;s2 

2035 IF s2=k1 THEN GO TO 6500 
2040 RETURN 

2100 PRINT AT f+2,g-l |Vf“: BEEP .1,30 
2110 PRINT AT -f+2, g-1 ; " J" 

2130 IF -f =y-1 THEN LET s2=s2+l: BEEP .04,0: 

PRINT AT 8,28;s2 

2135 IF s2=k1 THEN GO TO 6500 

2140 RETURN 

3000 PRINT AT yl,xl; " ";AT yl + l,xl; M "5 AT yl 

+2,x1;” “ 



26 Championship Boxing 


3010 FOR x=19 TO 12 STEP -1: LET xl=x 

3020 PRINT AT yl,xl5 INK 2 j “AC ";AT yl+2,xl;"£ 

<5“ SAT y 1 + 1, x 1 5 PAPER 0; INK 25 “Z?" 5 PAPER 6 5“ 

"i PAPER 25 INK 65 "Z?” 5 PAPER 6 5 “Z?" 5 AT yl,xl+2 
; INK 4 ;■'/ " ; AT yl + 2, xl + 2; “A 1 M 
3022 BEEP .02,0 
3025 NEXT x 

3030 PRINT AT yl,xl+2;“ “5AT yl+i,xl+25" "SAT 

yl+2,xl+2! 11 " 

3040 LET e=0: RETURN 

6000 PRINT AT T, g; "RHI"\ AT T+2, g 5 “ 7,7*" 5 INK 2 
; AT T +1, g; " S" 5 INK 0; "; INK 6; PAPER 3; “D" 
6010 PRINT FLASH 1 5 AT 1,75"WELL BOXED- A K.O 
.": BEEP .2,-20 
6020 GO TO 6600 

6500 PRINT AT y,x-l; INK 2 5 “ACO ”5 AT y + 2,x-l5" 
£G<3" 5 INK 65 PAPER 25 AT y+1, x-25 m D u 5 PAPER 65 
INK 25"11"5 INK 4;"/»" 

6510 PRINT AT 1,75 FLASH 1;"BAD LUCK- A K.O. 
6600 FOR T = 1 TO 200: NEXT T 

6620 CLS : IF k1=s2 OR s2>sl THEN GO TO 6700 
6630 PRINT "Well done ! You beat ";b*5" in",r 
□und!" rounds." 

6640 PRINT INK 3’"The result in points was " 
5 si,” Tor you, and "5s25" -for "5 b* 

6650 PRINT INK 2’“I suggest you try a toughe 
r opponent." 

6660 GO TO 6780 

6700 PRINT "Bad luck ! You were beaten in " ;r 
ound,"rounds." 

6710 PRINT INK 3’"The result in points was " 
5 si, "-for you, and “ ;s25" Tor "5 b* 

6740 PRINT INK 2’"I suggest you try a weaker 
opponent." 

6780 PRINT "Here’s your choice:": RESTORE 750 
0: PRINT : FOR -f = l TO 10: READ a*: PRINT T 5 " . 

. . ” 5 < ” AND TO 10) 5 a*: NEXT T 

6790 INPUT INK 75 PAPER 05“Enter your oppone 
nt's number or 0 iT you’ve had enough. "5 

6800 IF x —0 THEN STOP 

6810 CLS : RESTORE 7500: FOR T=1 TO x: READ a 
*: NEXT T: LET b*=a*(1 TO 6): PRINT "OK - You 





Championship Boxing 27 


shall -fight ";b$: PRINT INVERSE 1’ INK 3""P 
RESS ANY KEY TO START THE BOUT." 

6320 PAUSE 0: CLS 

6830 LET sl=0: LET s2=sl: LET sk=<11-x)/12: L 
ET k2=10+x + INT <RND*6): LET kl=16-x+INT (RND* 
10): GO TO 15 
7000 RESTORE 7500 

7100 PRINT AT 10,0;"Enter your namelup to 6 1 
ettersl": INPUT c*: IF LEN c*>6 THEN GO TO 7 
100 

7200 CLS 

7500 DATA "Henry Hopeless", “Arnold Awful ","Ni 
gel No-Good ","Phi 1 ip Fair"Andrew Average"," 
Roger Right-Hook", "Brian Br ick-Wal1 ", "Simon S 
uper","Edward Excellent","Flynn Fantastic" 
7510 PRINT INVERSE 1;" CHAMPIONS 
HIP BOXING 

INVERSE 0;” @ PAUL STANLEY" 

7520 PRINT INK 3’"So you want to be a champi 
on do you? I-f so this is the game f oryou. " i 
INK 2* "Which opponent do you wish to -fight 
-first?" 

7530 PRINT : FOR -f = l TO 10: READ a*: PRINT I 
NK 15f" AND fO10)ia$! NEXT -f 
7540 INPUT x: IF x<l OR x>10 THEN GO TO 7540 

7545 LET sk=(ll-x)/12 

7546 LET k2=10+x+INT <RND*6): LET kl=16-x+INT 
<RND*10) 

7550 RESTORE 7500: FOR f=l TO x: READ a$: NEX 
T -f: LET b$=a$ ( 1 TO 6) 

7560 CLS : PRINT "Very well, your opponent wi 
11 be’;a$’ INK 2’ "Each bout you -fight is only 
3 rounds. Move about the ring with5-8, and 
punch with GMle-ft hand)and Ptright hand). No 
te that youcan move and punch at the same ti 

7570 PRINT ’ INK lj"Only punches to the head 
score and K.O.s are possible.” 

7580 PRINT ’ INVERSE 1;"PRESS ANY KEY TO STAR 
T THE BOUT.": PAUSE 0: CLS 
7590 RETURN 

8500 PRINT AT 17,27;"0:00" 

3505 BEEP .25,0: BEEP .25,0 

8510 LET round=round+1: IF round=4 THEN LET 
round=3: GO TO 6620 



28 Championship Boxing 


3520 PRINT AT 21,0i "Prepare to -fight the next 
round."; INK 6; PAPER 0;AT 2,7;* , 0";AT 19,24; 
"D": FOR i=1 TO 20 

3525 LET y=y-(y>2): LET x=x-fx>7) 

8530 PRINT AT yl,xl!" "5 AT yl+l,xl;" "SAT yl 
+ 2,xli ” "; INK 25 AT y,x 5 "4C"; PAPER 0;AT y+1 
,x;"D "; PAPER 6;AT y + 2,x5 "EG ": LET yl=y: LET 
xl = x 

3535 LET -f =-f + (-f < 1 7) : LET g = g-Mg<23) 

3540 PRINT AT fl,glj" ";AT i 1+1,g1+1;" ";AT 

-f 1 +2, gl; " ";AT -f, g; “HI n ; PAPER 7;AT -f + l.g+1; 

PAPER 6; AT i +2, g ; “JK " : LET -f 1 =-f : LET gl = 
9 

8542 IF ATTR (2,7>=50 THEN IF ATTR <19,24)=4 
8 THEN GO SUB 9550: FOR -f = -l TO 2: PRINT AT 
y 1 + -f , x 1 ; " " : NEXT -f: PRINT AT 21,0!" 

”: GO TO 62 

8545 BEEP .1,-18: NEXT i 

9000 RESTORE 9010: LET -F=0: LET g=255: FOR y= 
USR "a" TO USR "t"+7: READ x: POKE y,x! NEXT 

y 

9010 DATA -f ,63, 127, g, g, 252,254,254,-f ,g, g, g, g, 
■f , -f , -f , 28,254,254,254,254,28, -f , i 

9020 DATA 195, 129,-f ,-f ,-f ,-f , 129, 195,254,254,252 
,g,g,127,63,-f,-f,-f,f,g,g,g,g,-f 

9030 DATA -f , -f , 28, 254,254,254,254,28,56, 127, 12 
7, 127, 127, 56, -f , -f 

9035 DATA -f , 252, 254, g, g, 63, 127, 127, -f , -f , 56, 127 
,127,127,127,56,127,127,63,g,g,254,252,f 
9045 DATA 66,129,157,165,165,94,66,60,60,60,2 
4,24,60,126,g,g,108,103,108,40,40,40,40,103 
9050 DATA 28,30,15,15,31,62,126,252,248,240,2 
40,224,224,240,240,243,252, 126,62,31,15, 15,30 
, 23 

9060 DATA 56,120,240,240,243,124,126,63,31,15 
,15,7,7,15,15,31,63,126,124,243,240,240,120,5 
6 

9100 RETURN 

9500 INK 4: FOR -f=0 TO 7 STEP 2: PLOT 55--f,15 
-•f: DRAW 0,145 + 2*-f: DRAW 145 + 2*-f,0: DRAW 0,-2 
*-f-145: DRAW -2*-f-145,0: NEXT -f 

9510 PRINT INK 3; BRIGHT 1;AT l,6;"i";AT 1,2 
5;"1 ";at 20,6;;at 20,25; 

9520 INK 0 





Championship Boxing 29 


9525 PRINT AT 4,0;c$;AT 4,26;b$ 

9530 PRINT AT 6,0; INK 2;"POINTS"; INK 0;AT 6 
,26;"POINTS"J INK 3;AT 15,0;"ROUND";AT 15,27; 
“TIME" 

9540 PRINT AT S,2jsl;AT 8,28;s2 
9545 RETURN 

9550 LET yl=16: LET xl=9: RESTORE 9560: FOR + 

=1 TO 4: READ y,x 

9560 DATA 0,I,-1,0,0,-1,1,0 

9570 FOR e=l TO 12: PRINT AT y1,x1; "L “\AT yl+ 

1, x 1; "/V"; AT yl+2, xl; " N" ; PAPER 2; INK 7;AT yl 
-1,xl;round 

9580 BEEP .06,-45 

9585 IF e=12 THEN FOR o=25 TO 35: BEEP .005, 
o: NEXT o: FOR o=l TO 20: NEXT o: FOR o=35 TO 
25 STEP -l: BEEP .005,o: NEXT o 
9590 PRINT AT yl,xl;“ -;AT yl+l,xl;" ";AT yl+ 

2, xl; “ ";AT yl-1,xl;“ " 

9600 LET yl=yl+y: LET xl=xl+x: 

9610 RETURN 


NEXT e: NEXT i 



30 


Motocross 


Motocross consists of two games. In the first a motorcycle races across 
the screen from left to right, continues down through several levels, 
and must leap over obstacles placed in its path. 

In the second game, Stunt-Cycle, the motorcycle leaps over a line of 
buses and must be landed on the other side without loss of control. After 
each successful leap the number of buses is increased. 

1 BORDER 0: PAPER 0: INK ?: CLS 
5 LET h s = 1 e 4 : LET wr = 4 
10 GO SUE 9000 
13 GO SUB 9100 
15 CLS 

20 GO SUB 3000 
22 BEEP .2,20 

25 POKE 23674,255: POKE 23673,255: POKE 236 
72,255 

30 PRINT AT y, x; BRIGHT 1;“ /4" 

100 FOR P = 1 TO s: NEXT -f 

200 LET x=x+l: IF x=31 THEN PRINT AT y,31;" 
“: LET x =0: LET y=y+ 5: IF y=25 THEN GO TO 2 
00.0 

250 IF SCREENS <y,x+l)='“ THEN GO SUB 1000 
270 IF IN 49i50=247 THEN GO TO 1020 
300 LET s=s+tl AND IN 65022=251)-(1 AND IN 6 
5022=254): IF s<1 THEN LET s=l 
900 GO TO 30 

1000 IF IN 49150=247 THEN GO TO 1500 
102.0 LET c=144: FOR T=x TO 30: PRINT AT y, -f } 
BRIGHT is*' " | CHR* c: LET c = c + (c < 147) - (3 AND c 
=147): BEEP .1,-30: NEXT i 

1030 CLS : PRINT "Bad Luck! You crashed.": GO 
TO 92.00 

1500 PRINT AT y,x j " "iAT y-l,x+l} BRIGHT 1; "A 

1510 FOR -f = 10 TO 15: BEEP . 02,-f : NEXT -f 
1520 PRINT BRIGHT 1;AT y-l,x + l;" "5 AT y,x + 2; 
" A “ LET x = x + 2: RETURN 

2000 LET tl=<65536*PEEK 23674+256*PEEK 23673+ 




Motocross 31 


PEEK 23672)/48: LET t=(INT <t1*100))/100 
2005 CLS 

2010 PRINT AT 1,0; "Your Time Was " ; t; " Second 

2020 IF t < h 5 THEN PRINT INK 4’”That Is A Ne 
w Fast Time!”: LET hs=t 

2030 PRINT INK 5’"The Best Time Is ";hs;" Se 
conds." 

2040 GO TO 9200 

3000 FOR g=21 TO 6 STEP -5: PRINT AT g - 1 ,RND* 
20+6; INK 6 ; “£" ; AT g- 1 , RND*20+6 ; "£" : FOR -f=0 
TO 31: PRINT INK 2; AT g,-f;" ": NEXT -f : NEXT 

9 

3300 LET y = 5: LET x=0: LET s=20 

3450 RETURN 

5000 LET bu.ses=5: CLS 

5010 LET y=5: LET x=0: LET s=10 

5015 PRINT AT 0,11;buses;" BUSES" 

5020 GO SUB 7500 

5030 PRINT AT y,x; BRIGHT 1 ; “ A ,: 

5100 FOR -f = l TO s: NEXT -f 

5200 LET x=x+l: IF x = 3i THEN PRINT AT y,31;” 
,! : LET x=0: LET y=y+ 5 

5250 IF SCREEN* <y,x+l)=" " THEN GO TO 6000 
5300 LET s=s+(l AND INKEY*=”d")-(1 AND INKEY* 
= " a" ) : IF s < 1 THEN LET s=l 
5400 GO TO 5030 

6000 PRINT AT y,x;” "; BRIGHT 1;AT y-l,x + l;"<4 

a : BEEP s/100,1 

6020 PRINT BRIGHT 1 ; AT y-l,.x+l5" " ; AT y-2,x + 

2; “A": BEEP s/100,1: NEXT -f 

6030 LET x=x + 2: FOR -f=x TO (x + 20-s): BEEP s/1 
00,1: PRINT BRIGHT 1 ; AT y-2,-f;" A": NEXT -f 
6040 PRINT AT y-2,-f;” " ; BRIGHT 1 ; AT y-l,-f + i; 

"A": BEEP s/100,1 

6050 IF ATTR <y,f+l)<>6 THEN GO TO 6200 
6060 FOR x = -f + l TO 30: PRINT AT y-l,x; BRIGHT 

6065 BEEP s/100,<y=20)-(55 AND y=21) 

6070 IF SCREEN* (y,x+l)=” " THEN PRINT AT y- 

1 , x +■ 15 " “ : LET. y=y+ 1 

6080 NEXT x 

6085 CLS : LET buses=buses+1 
6090 GO TO 5010 



32 Motocross 


6200 PRINT AT y-l.-f + l;" “ : LET c=144: FOR x = -f 

+1 TO 31: BEEP .1,-20: PRINT AT y,x: BRIGHT 1 
; ' » j CHR* c: LET c = c +<c<147)-<3 AND c = 147> : N 
EXT x 

6210 CLS : PRINT AT 0,0;"You Failed In Your A 
tternpt At buses ’ " Buses . " 

6240 IF buses—1 >wr THEN PRINT INK 5’“Howeve 
r. Your Successful Jump Over ";buses-15” Bu 
ses Is A New World"’“Record!I ! !": LET wr=buse 
s- 1 

6270 PRINT INK 6’"The World Record Is “iwri" 
Buses." 

6290 GO TO 9200 

7500 FOR f =21 TO 6 STEP -5: FOR g=0 TO 31: PR 
I NT INK 3; AT f , g; ” : NEXT g: NEXT f 
7510 PRINT INK 6;AT 20, 4 5 " F"\\ FOR f=l TO bu 
ses: PRINT INK 2; BRIGHT 1 NEXT f: PRI 

NT INK 6 5 »HIJ* 

7550 RETURN 

9030 RESTORE 9010: FOR f=USR "a" TO USR ”j”+7 

: READ g: POKE f,g: NEXT f 

9010 DATA 32,62,50,254,152,90,231,66 

9020 DATA 2,119,82,92,124,242,23,26 

9030 DATA 66,231,90,25,127,76,124,4 

9040 DATA 88,232,79,62,58,74,238,64 

9050 DATA 0,0,0,0,0,32,112,248 

9060 DATA 1,3,7,15,31,63, 127 f 255 

9070 DATA 126,66,126,126,66,126,126,36 

9080 DATA 224,252,255,255,255,255,255,255,0,0 

, 128,240,254,255,255,255,0,0,0,0,0,192,248,25 

5 

9090 RETURN 

9100 LET a*=”MOTOCROSS": PRINT AT 21,ll;aS: F 
OR f=l TO 9: FOR g=20 TO 0 STEP -1: BEEP .001 
,f*3+30: PRINT AT g,f+10!a*(f) 5 AT g+l,f + 10J" 

- : NEXT g: NEXT f 

9105 FOR f=0 TO 30: BEEP .04,-28: PRINT INK 

6 j AT 2, f ; " A"-,: NEXT f: PRINT AT 2,315” " 

9110 PRINT AT 2,05"This Program Consists Of T 
wo Motorbike Games." 

9120 PRINT INK 6’ "For '”* Moto-cr oss" “ , jump w 
ith J only when you reach the obstacle" 

9130 PRINT INK 5’"For both programs, acceler 







Motocross 33 


at ion and deceleration are possible by hold 
i n g A or D. 

9200 PRINT INK 4’“Press the key which corres 
ponds to what you want to do.” 

9210 PRINT INK 6’"1...Moto-cross”’ INK 5’"2. 

, .Stunt-cycle" ’ INK 7’ ”3...Exit -from the prog 

9220 IF INKEY$="1" THEN GO TO 15 
9230 IF INKEYS="2“ THEN GO TO 5000 
9240 IF INKEY$="3” THEN STOP 
9250 GO TO 9220 




34 


Critical Path Analysis < 48 k> 


Even if critical path analysis does not exactly excite you, this program 
can be used to find the longest or shortest route through a large maze. As 
dimensioned, it will handle a network of up to 50 nodes or junctions, 
each of which may have up to 5 outlets. The joining links can represent 
distance or time and the program will list all possible paths, or the longest 
path, or the one with most nodes. Loop back conditions are 
automatically rejected by the program. Draw your own network on 
paper and enter the separate link details in the DATA LINES 1000 
onwards. Then press the key sit back and watch the computer display 
the path analysis. 

10 REM *CRITICAL PATH ANALYSIS @198 

3 MICHAEL SEWS -for 48k Spectrum 

20 DIM a$(50, 5) : DIM b$<50,5): DIM q*<30): 
DIM n$(30): DIM p*<30,20): DIM p(30): DIM t(3 
0 ) 

21 LET K=0 

25 GO TO 500 

29 REM **READ NETWORK DATA 

30 READ e 

40 FOR x=l TO e 

50 READ a,b,c 

60 FOR y=l TO 5 

70 IF b*(a)(y) = " " THEN LET b$(a) <y)=CHR$ 

< 33 + b) : LET n$(a)=CHR$ (CODE n$(a)+l): GO TO 
90 

80 NEXT y 

90 FOR y=1 TO 5 

100 IF a$(a)(y)=" - THEN LET a$(a) <y)=CHR$ 

(33+c): GO TO 120 

110 NEXT y 

120 NEXT x 

125 READ a: IF a<>-l THEN PRINT "Check sum 
error": STOP 

127 PRINT " DATA Check OK" 

130 INPUT "ENTER start node ";s: LET n=s: IF 

s< 1 THEN GO TO 13.0 

135 PRINT : PRINT AT 20,0;"Enter ""-1"" to s 



Critical Path Analysis 35 


ee ALL passible paths." 

140 INPUT "-finish node - ; -f : IF -f >0 THEN LET 
n*(-f) = " ■' 

142 IF i >e OR -f=0 OR -f = s OR i<-l THEN GO TO 
140 

143 PRINT AT 20,0;" 

”;AT 20,55" 

WAIT PLEASE" 

145 LET p=l: LET h*=n* 

150 LET p*<p)(1)= CHR* (33+n) 

160 IF n*(r,)=" " THEN GO TO 300 

165 LET g*<n)="l” 

170 LET h=CODE h*<n>-32 

175 IF g*(CODE b*(n)<h)-33)<>" " THEN GO TO 

430 

130 FOR x=l TO LEN p*(p): IF p*<p)(x)=” ” TH 

EN LET p*(p><x)=b*<n)(h)! GO TO 185 
182 NEXT x 

185 LET t(n)=p(p): LET p(p)=p(p)+CODE <a*(n) 
<h))-33 

190 LET n=CODE b*(n)(h)-33 
200 GO TO 160 

300 LET v = l : LET g=0 

301 FOR x=LEN p$(p) TO 1 STEP -1 

305 IF p*(p)<x)=” " THEN GO TO 320 

306 LET g*(CODE p*(p)<x)-33>=” “ 

307 IF g=0 AND p* ( p ) ( x ) < > CHR* (-f+33) AND -f >0 
THEN LET v=0 

310 LET g=l: IF CODE h*<CODE <p*<pMx>)-33)> 
33 THEN GO TO 400 
320 NEXT x 

325 IF v=0 THEN LET p*(p)=" 

": LET p=p-l 

330 PRINT AT 8,050*;AT 8,0;: LET j=0: LET u= 
01 LET r=0: LET tp=0: FOR x=l TO p 
335 FOR y=l TO LEN p*(x): IF p*(x)<y)=" " TH 
EN GO TO 350 

340 PRINT CODE p*(x) (y)-33; " , "5 : NEXT y 
350 PRINT " * ";p(x): IF p(x)>j THEN LET j= 
p <x) : LET k = x 

355 LET tp=tp+i: IF y-l>r THEN LET r=y-l: L 
ET u=x 
360 NEXT x 

362 LET -f*=STR* f: IF -f<0 THEN LET f$="erd" 



36 Critical Path Analysis 


365 PRINT " 

: PRINT "No. o-f paths " jsj" to = “ ; tp 

366 PRINT : PRINT "Path No. ” ; u 5 " has most n 
odes. < " ; r ; ") " 

368 PRINT "Path No. " ; k ; " is longest. ( ” jji " ) 
370 STOP 

<100 LET n=CODE p*<p)<x)-33: LET h* ( n ) = CHR$ ( 
CODE h$(n)-l): LET q*=p*<p): LET p=p+v: LET p 
$(p)( TO x)=p$(p-v)( TO x): LET p$(p)<x+l TO 
)=” ": LET p(p 

)=t(n) 

405 FOR y=x + l TO LEN q*: LET z=CODE q$(y>-33 
: IF z<l THEN GO TO 160 
410 LET h$(z)=n«(z) 

415 NEXT y 
420 GO TO 160 

430 PRINT "Loop-back error.": PRINT : FOR 1= 
1 TO LEN p$(p)-l: IF CODE p$<p)<1>-33<1 THEN 
GO TO 450 

440 PRINT CODE p$(p) ( 1)-33; "-" ; : NEXT 1 
450 PRINT CODE b*<n) <h)-33: PRINT : PRINT "P 
lease correct data error.": PRINT : GO TO 330 

499 STOP 

500 BORDER 5: PAPER 5: INK 1 

505 LET 0*=" ": FOR X=1 TO 5: L 

ET 0$=0$+0$: NEXT X 

510 CLS : PRINT ; INVERSE 1;"CRITICAL PATH N 
ETWORK ANALYSIS "5 INVERSE 0 
520 INK 0: PRINT : PRINT "CRITICAL PATH NETW 
ORKS CAN BE APPLIED WHEREVER SEVERAL INTER¬ 
DEPENDENT ACTIVITIES NEED TO BE CARRIED O 
UT IN A SPECIFIED SEQUENCE TO ACHIEVE A FIN 
AL GOAL" 

530 PRINT : PRINT "THE GOAL MIGHT BE THE COM 
PLETION OF A LARGE PROJECT OR, MORE SIMPLY 
, ARRIVAL AT A DISTANT METRO STATION BY TH 
E SHORTEST POSSIBLE ROUTE" 

540 PRINT : PRINT "THIS PROGRAM IS SUITABLE 
FOR USEIN EITHER CASE."; 

550 PRINT " A DEMONSTRATION NETWORK IS SHOWN 
AND THE PROGRAM WILL TRACE OUT ALL POSSIBLE 
PATHS THROUGH THE NETWORK, INDICATIN 

G THE LONGEST AND SHORTEST ROUTES." 



Critical Path Analysis 37 


560 PRINT ; INVERSE 15 AT 21,9; "PRESS < ENTER > 
" ; INVERSE 0 

570 INPUT x$ 

600 PAPER 7: INK 0: CLS : PLOT 11,131: DRAW 
23,32 

610 DRAW 160,0: DRAW 42,-16 

620 PLOT 11,131: DRAW 43,16: DRAW 176,0 

630 PLOT 11,131: DRAW 72,0: DRAW 24,16: DRAW 

112,0 

640 PLOT 11,131: DRAW 32,-10: DRAW 80,0: DRA 
W 32,10 

650 PLOT 60,147: DRAW 24,16 

660 PLOT 132,164: DRAW 16,-16: DRAW 3,-16: D 
RAW 3,-16 

670 DRAW 72,32: REM DRAW -40,0 

630 PLOT 200,132: DRAW -43,0 

700 PRINT INVERSE 1 ; AT 1,4; 11 4 " ; AT 1,10; ”5"; 
at l,16;"6 ";at l,23;"ll"; 

710 PRINT INVERSE 1;AT 5,15"1";AT 3,7;"2";A 
T 3,13;”3";AT 3, 13; ”7";AT 3,23; "12"; 

720 PRINT INVERSE 1;AT 5,19;"8”;AT 5,24;"10 
" » AT 7,20;"9"; 

730 PRINT AT 2,2;"4";AT 1,7; "1";AT 1,13; "l"; 
AT 1,19; "7" ;AT 1,26;"3"; 

740 PRINT AT 3,4;"2”;AT 3,10;"3";AT 3,15;"5" 
;AT 3,22;"11";AT 5,6;"4";AT 5,21;"3”;at 4,27; 
"9";AT 6,23!"2" 

745 PRINT AT 2,8;"3";AT 2,16;”2" 

750 PRINT AT 4,13;"0";AT 6,19;"3";AT 6,11;"1 
1 " 

300 PRINT AT 8,0; "Nodes "; INVERSE 1;"1"; IN 
VERSE 0; " represent the commence- went o-f act 
ivities, (represented by the joining lines). 
The linelengths might represent a number o-f d 
ays or weeks required to complete an activi 

ty ■ ” 

310 PRINT : PRINT " Activities can progress 
in one direction only and the program will r 
eject a network having a loop-back condition 

820 PRINT " Each activity progresses in the 
direction entered in the program DATA statem 
ents. ” 

830 PRINT AT 21,13; INVERSE 1;"PRESS <ENTER> 





38 Critical Path Analysis 


"! INVERSE 0 

840 INPUT X* 

850 PRINT AT 8,0;Q$;AT 21,18;" 

860 PRINT AT 9,0;"The zero (0) length betwee 
n node "; INVERSE 1;"?"; INVERSE 0;” and ”; I 
NVERSE 1; "3"; INVERSE 0;" indicates the exist 
ence o-f a restraint which prevents activitie 
s at node " ; INVERSE 1;"8"; INVERSE 0;" -from 
commencing until activities "; INVERSE l;"3"; 

INVERSE 0j "to"; INVERSE 1;"7"; INVERSE 0; 

870 PRINT " and ”; INVERSE 1;”6"; INVERSE 0 
i "to"! INVERSE 1; '7'i INVERSE 0;" are couplet 

830 PRINT : PRINT : PRINT ; INVERSE 1;"PRESS 

< ENTER >"; INVERSE 0; 

390 INPUT X$ 

900 GO TO 30 

1000 REM **FLOW CHART DATA**** 

1005 REM **number o-f connecting 
1 i nes 

1010 DATA 18 

1015 REM **start node, -finish no 

de, line length 

1050 DATA 1,4,4 

1060 DATA 1,2,2 

1070 DATA 1,3,4 

1030 DATA 1,8,11 

1090 DATA 2,3,1 

1100 DATA 2,5,3 

1110 DATA 3,7,5 

1120 DATA 4,5,1 

1130 DATA 5,6,1 

1140 DATA 6,7,2 

1150 DATA 6,11,7 

1160 DATA 7,8,0 

1170 DATA 7,12,11 

1180 DATA 8,9,3 

1190 DATA 8,10,3 

1200 DATA 9,10,2 

1210 DATA 10, 12,9 

1220 DATA 11,12,3 

1230 DATA -1 


39 


Chomper 

This is an interesting variation of a game we caught sight of in an arcade a 
while back. It’s got a maze, power pills, a ghost and things that go chomp 
in the night. Enjoy! 

1 BORDER 0: PAPER 0: INK 7: CLS 

2 REM @ P.STANLEY 

A GO SUB 9000 

5 LET hs=0 

10 LET m=0: LET sc=0: LET 1i=3 
20 GO SUB 8000+m 

100 IF INKEY*= " 8" THEN IF ATTR <y,x+l)<>4 T 
HEN LET x = x + l: LET p*="/V" 

110 IF INKEY*="5 " THEN IF ATTR <y,x-l)<>4 T 
HEN LET x = x-l: LET p*="<?" 

120 IF INKEY*= 11 6" THEN IF ATTR <y+l,x><>4 T 
HEN LET y=y+l: LET p*= ,, / D " 

130 IF INKEY*="7“ THEN IF ATTR <y-l,x)<>4 T 
HEN LET y=y-l: LET p*=” O“ 

150 IF SCREEN* (y^)®"*- THEN BEEP .2,20: L 
ET r=1: BORDER 2: LET d-f = -d-F: LET dg=-dg 
180 IF SCREEN* <y,x)="." THEN PRINT AT yl,x 
1; "M “: LET sc=sc+l: LET cl=cl+l: PRINT AT 0,6 
;sc: BEEP .005,30: IF ci=c THEN GO TO 7000 
190 IF y=11 THEN LET x=x+(30 AND x=l)-(30 A 
ND x=31) 

192 LET p=x: LET q=y: IF r THEN LET p=31-x: 
LET q=21-y: LET r=r+l: IF r=50 THEN BEEP .2 
,-10: BORDER 0: LET r=0 
200 PRINT AT yl,xl5" "5 INK 6 5 AT y,x!p* 

210 LET yl=y: LET xl=x 

400 IF y = -f AND x = g THEN GO TO 6000+(500 AND 
r ) 

500 LET -F1 =-f : LET gl=g: LET g=g + dg: LET -f=+ + 
d-f 

520 IF ATTR <-f,g)=4 THEN GO TO 1000 
600 IF HOq AND NOT d-f THEN IF ATTR (-f 1 + (-f 
l<=q)-(-f>q) , g 1) < > 4 THEN GO TO 1010 
610 IF glOp AND NOT dg THEN IF ATTR <-fl,gl 
+<gl<=p)-<gl>p))<>4 THEN GO TO 1200 




40 Chomper 


800 IF -f = 1 1 THEN LET g=g+(30 AND g=l)-(30 A 
ND g=31) 

810 PRINT OVER 1 ; AT -f 1 , g 1 ; " /? - ; AT -f,g;"*" 

850 IF y = -f AND x = g THEN GO TO 6000+(500 AND 


999 GO TO 100 

1000 IF NOT dg THEN GO TO 1200 

1010 IF NOT d-f THEN LET d-f = <-f 1 < =q) - (-f 1 >q) : L 
ET dg=0: LET g=gl : LET F = -fl+d-f 

1020 IF ATTR < -f , g) =4 THEN LET' d-f = -d-f : LET -f = 
•f 1+d-f 

1030 GO TO 800 

1200 LET dg=(gl<=p)-(gl>p) : LET df=0: LET -f = -f 
l: LET g=gl+dg 

1210 IF ATTR (-f , g) =4 THEN LET dg=-dg: LET g= 


gl+dg 

1220 GO TO 800 
6000 FOR -f = 1 TO 15 
6010 PRINT AT y,x;"/V": BEEP 
6020 PRINT AT y,xi"P“: BEEP 
6030 PRINT AT y,x;"<?" : BEEP 
6040 PRINT AT yjXj-G": BEEP 
6050 NEXT -f 

6060 FOR -f = l TO 50: NEXT -f 
6065 PRINT AT y,xi“ LET 1 
HEN GO SUB 8200: GO TO 100 
6070 CLS : PRINT AT 7,0;"You 


.05, -f 
. 05, -f + . 
. 05, -f + . 
.05, -f+ . 


i=li-l: 
scored 


25 

5 

75 


IF 1 i >0 T 


6080 IF sc >hs THEN LET hs = sc: PRINT AT 10,0; 
"Well done that’s the new best score!!!”: G 
0 TO 6100 

6090 PRINT AT 10,0;"The high-score is ";hs;". 


6100 PRINT AT 13,0;"Press any key to play aga 
in.”: PAUSE 0: CLS : GO TO 10 

6500 FOR -f = l TO 5: FOR g=2 TO 7: PRINT INK g 

;AT y, x; " S" : BEEP .01,-f#5 + g: NEXT g: NEXT -f 

6550 BORDER 0: LET r=0 

6600 LET sc=sc+50: PRINT AT 0,6;sc 

6650 LET -f = 16: LET g=16: LET gl=g: LET -fl=-f 

6660 LET dg=-1: LET d-f=0: PRINT OVER 1; INK 

5; AT -f , g; "P" 

6670 GO TO 100 

7000 BORDER 0: CLS : PRINT AT 3,0;“ ■ ■ | 

■■■■■ ■ ■ ■ ■ ■ ■ 




Chomper 41 


7010 PRINT AT 11,05" 


7020 FOR P=-40 TO 40 STEP 4: BEEP . 05, -f : NEXT 


7030 FOR -f = l TO 150: NEXT -f 

7040 CLS : LET m=ro+10: IF m=40 THEN LET m=0 
7050 GO TO 20 

8000 PRINT AT i,4i"HAAAAAAAAAAAAAAAAAAAAAAAJ 

B BE FALAE 

C FALAE C FALAE B B B B D B 

B B B C B C B C C B C B C B" 

8001 PRINT" BBBBBBCBBBBBB 

BBDDBDBDBDDBB B B B 

B B B B B GAAAAA1 FAKAE GAAAAAI 

B FAAI GAAE " 

8002 PRINT " FAAAAAAAAAAAAAAAAAAAE 

FAAJ HAAE B FAAALAAA 

E C FAAALAAAE B B B B B 

B B FAE B C C D C C B FAE B" 

8003 PRINT " B B B B B B B B 

B C FAI D GAAAI D GAE C B B B 

B B B GAAAAAAAAAAAAAAAAAAAI 

B B B GAAA 

AAAAAAAAAAAAAAAAAAAAI " 

8004 GO TO 8100 

8010 PRINT AT 1,45" HAAAAAAAAAAAAAAAAAAAAAAAJ 

B B B HAAAJ 

C C C C C HAAAJ B B B B B B D B B B 

B B B D C B B B B B B C D B" 

8011 PRINT " B BBBBCBBBB B 

B FAI D B D B D B D GAE B B B 

B B B B FAAAAAI FAKAE GAAAAAE 

B FAAI GAAE “ 

8012 PRINT " FAE FAAAE C FAAAE FAE 

FAAJ B HAAE B FAAAAAJ 

C D C HAAAAAE B B B B B B 

B B FE FJ B GAAAI B HE FE B B 

B B B B B B FAE B D HAAAJ D 

B FAE B" 

8013 PRINT “ B B B B B B 



42 Chomper 


B FAAAI FAI C GAE GAAAE B B 

B B GAAAAAAAAAAAKAAAAAAAAAA 

AI" 

8014 GO TO 8100 

8020 PRINT AT 1,4;" HAAAAAAAAAAAAAAAAAAAAAAAJ 

B B B HAAE 

FAAAE FAAAE FAAJ B B B 

B B B B HE FAAAE FAAAE FJ B B" 

8021 PRINT ” B D B B D B 

B D FE FE FE FE D B B C 

C B B GAAE FAAAE FAAAE FAAI 

B FAAI GAAE" 

8022 PRINT " FAAE FAAAE FAAAE FAAE 

FAAJ HAAE B HAAE FAA 

AE FAAAE FAAJ B B D D 

B B C FE FE FE FE C B" 

8023 PRINT " B C B B C B 

B B GE FAAAE FAAAE FI B B B B 

B B B GAAE FAAAE FAAAE FAAI 

B B B GAAA 

AAAAAAAAAAAAAAAAAAAAI" 

8024 GO TO 8100 

8030 PRINT AT 1,4;" HAAAAAAAAAAAAAAAAAAAAAAAJ 

B B B C FJ 

HAAAJ HAAE B B B B B B B 

B B B B D D B B" 

8031 PRINT " B B FI B B 

B B HAAAJ B B B B 

B B B B B D D D GAAE 

B FAAI GAAE" 

8032 PRINT " FAAE FE FAAAE FE FAAE 

FAAJ HAAE B C C C C 

HAAAJ HE C B B B B B B B B B B 

B B B D D B D DEC B B“ 

8033 PRINT " B B B B D C B B 

B B B HAAAJ B D B B B B B 

B B B B B B D D D D D FI 

B B B GAAA 

AAAAAAAAAAAAAAAAAAAAI" 

8100 PRINT AT 2,5; INK 3;"*";AT 2,27;“*“jAT 2 
0,5;;AT 20,27; 

8105 LET c 1=0: LET c = 5: FOR -f=2 TO 20: FOR g = 
5 TO 27 

8110 IF SCREEN* <f,g)=” " THEN PRINT AT -f,g; 

" . LET c=c+l 


Chomper 43 


3120 NEXT g: NEXT -f 

3140 PRINT AT 11,1;" ...“;AT 11,28;”... " 

8200 LET x=16: LET y = 5: LET yl=y: LET xl=x: L 
ET r=0: LET p$=”/“" 

3210 LET -f = 16: LET g=x : LET gl=g: LET fl=-f 
3220 LET dg=-l: LET df=0: PRINT OVER 1; INK 
5; AT -f , g; "/?" 

8250 PRINT AT 0,0;"ScoreAT 0,17;"High-scor 
e : ” ; h s 

8260 PRINT AT 0,115" " ; AT 0,11 ; < “/V" AND li> 

l> + <" N" AND 1i> 2) 

3999 RETURN 

9000 RESTORE : FOR -f=USR "a" TO USR "s”+7: RE 
AD g: POKE -f,g: NEXT -f 

9010 DATA 0,255,0,0,0,0,255,0,66,66,66,66,66, 

66,66,66 

9020 DATA 0,24,36,66,66,66,66,66,66,66,66,66, 
66,36,24,0 

9030 DATA 0,248,4,2,2,4,248,0,0,31,32,64,64,3 
2,31,0 

9040 DATA 66,65,64,32,32,24,7,0,0,7,24,32,32, 

64.65.66 

9050 DATA 66,130,2,4,4,24,224,0,0,224,24,4,4, 

2.130.66 

9060 DATA 66,129,0,0,0,0,255,0,0,255,0,0,0,0, 

129.66 

9070 DATA 60,126,255,255,255,255,126,60,60,12 
6,240,224,224,240,126,60 

9080 DATA 60,126,15,7,7,15,126,60,60,126,255, 
231,195,195,66,0,0,66,195,195,231,255,126,60 
9090 DATA 60,126,219,201,255,255,255,170,0,24 
2,133,229,21,149,93,0 

9510 INK 6: PLOT 152,173: DRAW 7,-7: DRAW 8,8 
9520 PLOT 232,173: DRAW 15,-35 

9525 PRINT *’” 0 Paul Stanley" 

9530 INK 7: PRINT ’’”A standard pacman-type g 
ame, ”,"complete with power-pills, whichwhen 
eaten give you. the chance " , “to eat the ghost 

9540 PRINT INK 5’’"Move with the cursor keys 
5-8. " 

9550 PRINT INK 4’’"Press any key to play..." 
: PAUSE 0: CLS 
9999 RETURN 





44 


Battleships 


This is the traditional game of Battleships to be played against the 
computer. For anyone who hasn’t come across the game before (does 
such a creature exist?), there are full instructions included in the listing. 
The winner is the first to destroy all six enemy ships, and there are levels 
of difficulty (1 or 2) which must be entered before battle can commence. 

1 OVER 0: BORDER 7: PAPER 7: INK 0: CLS 

2 REM 0 PAUL STANLEY 
5 POKE 23658,9 

10 GO SUB 9000 
15 GO SUB 7000 
20 GO SUB 8000 
50 LET Q=16: LET P=18 
100 PRINT OVER l;AT Q,P;"+" 

110 PRINT AT 18,0,' PAPER 4;" YOUR 

MOVE 

120 PRINT AT 20,0; INK 3;"Move your cross ab 
out with 5-8. Fire by pressing 9." 

130 PRINT OVER 1 ; AT Q , P; ” + " 

140 IF INKEY*= ,, 6” THEN LET Q=Q+1: IF <3=17 T 
HEN LET Q=5 

150 IF INKEY$=" 7" THEN LET <3 = Q-1: IF 0 = 4 TH 
EN LET 0=16 

160 IF INKEY$="8" THEN LET P=P+1: IF P=30 T 
HEN LET P=18 

170 IF INKEY$="5" THEN LET P=P-1: IF P=17 T 
HEN LET P=29 

180 IF INKEY$=" 9 11 THEN GO TO 200 
190 PRINT OVER 1; INK 3;AT Q,P; U +" 

195 BEEP .06,-10: GO TO 130 

200 BEEP .05,30: PRINT AT Q,P; OVER 1;"+" 

210 FOR F=1 TO 6 

220 IF H < F)=0 AND 0 = F(F) THEN IF F = G<F) OR 
P=G<F)+1 THEN GO TO 250 
230 NEXT F 
240 GO TO 300 

250 LET H <F)=1: FOR G=7 TO 0 STEP -1: PRINT 
INK g5 AT F(F) ,G(F) 

260 FOR 1=0 TO G-X-8 STEP G+i: BEEP .06,1: NEX 




Battleships 45 


T I 

265 NEXT G • 

■**270 LET sc l = sc 1 + 1 : IF scl=6 THEN GO TO 2000 
300 PRINT AT 13,05 PAPER 4;" MY 

MOVE “ 5 PAPER 7; AT 20,05". 


305 LET g = ( INT ( RND* 12 / SC ) ) *SC + 1 : LET -f = INT 
(RND*12)+1 

320 IF c$(F,G)="X" THEN GO TO 305 
330 LET c $ (F , G) = 11 X " 

350 LET y=-f+ 4: LET x=g + 3 
360 GO SUB 1000 
370 FOR i=1 TO 6 

376 IF Y = Y(I) THEN IF X = X <I) OR X=X(I)+1 TH 
EN GO TO 400 
385 NEXT i 
390 GO TO 100 

400 FOR o=7 TO 0 STEP -1: PRINT AT y(i),x(i) 

; INK o; ,, /?S" 

420 FOR 1=0 TO o*3 STEP o+l: BEEP .06,1: NEX 
T 1 

425 NEXT £ o 

430 LET c$<Y(i)-4,X(i)-3)="X“: LET c*(Y<i)-4 
,X( i ) -2) = "X“ 

440 LET SC2=SC2+l: IF SC2=6 THEN GO TO 2100 
450 GO TO 100 

1000 OVER l:- PRINT INK 5 5 AT y-1, x-4 ; " ■■■ BSK 

1005 BEEP .08,11 

1010 PRINT AT y-1,x-4; "■■■ ■■■■ "5 AT y,x-4;”B 
1020 PRINT INK 5; AT y-l,x-3;"BB ■■■ " 5 AT y,x 
1025 BEEP .085,9 

1030 PRINT AT y-1,x-3; BBB "iAT y,x-3;"BB 
BBBB ";AT y+1,x-3; 

1040 PRINT INK 55 AT y- 1, x-3j ".« • j « , /9" 5 AT y, x- 


1045 BEEP .09 ; 7 

1050 PRINT Af y-l,x-3i" /4";AT y, 

B B" 

1060 PRINT INK 5;AT y,x-25"B CUD " 





46 Battleships 


1065 BEEP .095,5 

1070 PRINT AT y, x - 2 ;"WCMD " 

1080 PRINT INK 55 AT y,x-1; n EFG “ 

1085 BEEP .1,4 

1090 PRINT AT y,x-1; n EFG" 

1100 PRINT INK 5;AT y,x-1J " HI " 

1105 BEEP .105,2 

1110 PRINT AT y,x-1; "HZ" 

1120 PRINT INK 5 5 AT y,x;'V" 

1125 BEEP .11,0 
1130 PRINT AT y,x; "J" 

1135 OVER 0 
1140 RETURN 

2000 CLS : PRINT AT 4,0; INK 3;"WELL DONE ! Y 
OU DESTROYED ALL THE COMPUTER’S FLEET '*" 
2050 GO TO 2200 

2100 CLS : PRINT AT 4,0; INK 3;”BAD LUCK ! TH 
E COMPUTER SUNK ALL YOUR SHIPS ! ! " 

2200 PRINT AT 8,0;"PRESS ANY KEY TO PLAY AGAI 
N. . . " 

2300 IF INKEY$="" THEN GO TO 2300 
2400 CLS : GO TO 20 

3265 FOR 1=1 TO 6: IF Y=Y(I) THEN IF X=X(I) 
THEN GO TO 8210 

7000 FOR Y=20 TO 4 STEP -4: LET X=27-Y: GO SU 
E 1000: NEXT Y 

-7005 LET A*="BATTLESHIPS^ " 

, 7010 PRINT AT 2,0;: FOR Y= 1 TO^S-K^FOR G=1 TO 
13: PRINT PAPER /£f?\ INK RND#4 /a$ (GJ ; : BEEP .1 

,G + F*3: NEXT G: nWt F ^-/ --J, 

7020 PRINT AT 4,0;" - 

7050 PRINT PAPER 4’" @ PAUL STAN 

LEY 

7100 PRINT ’’“Play the computer at battleship 


7110 PRINT INK 4’ ’"The winner is the -first t 
o destroy all six enemy ships." 

yt 7120 PRINT INK 3’’"Full instructions are qiv 
en as you proceed." 

7130 PRINT PAPER 4’’"PRESS ANY KEY TO START 


7140 IF I NKEY*= 11 " THEN 
7150 CLS : RETURN 


GO TO 7140 



Battleships 47 




00 

(Y 


8000 INPUT "ENTER SKILL LEVEL (1-EASY OR 2 
-HARD) *5 SC 

8005 IF SC<>2 AND SCOl THEN GO TO 8000 
3010 FOR -f =5 TO 16: PRINT AT i , 4 5 " KKKKKK) 

L KKKKKKKKKX^L " : NEXT -f 

3025 PRINT aV0,0; PAPER 2; INK 7;"B ATT 
L E SHIPS" 

8030 PLOT 32,135: DRAW 95,0 
8040 PLOT 144,135: DRAW 95,0 

3050 FOR f = l TO 12: PRINT AT -f+4,2;CHR* <64 + f 
) : NEXT -f 

8060 FOR -f = l TO 9: PRINT INK 2;AT 3,-f+3}-f: N 
EXT -f 

8070 PRINT INK 25 AT 3,135 " OPO" 

8030 PRINT AT 1,0} PAPER 55" YOUR SHIPS 
MY SHIPS 

8100 PRINT INK 3}AT 18,0;"You can place 6 sh 
ips by typi nq ”"D 4" " (for ex ample). Then pres 
s ENTER." 

8200 DIM a$<3): DIM Y<6): DIM X(6): DIM H(6) 
3206 FOR f=l TO 6 
8210 INPUT a$ 

8220 IF a$ (1 )’ < " A" OR a*(l)>"L" THEN GO TO 82 
10 

3230 LET y=CODE a$(l)-60 

3250 LET x=VAL a*<2 TO )+3 

8260 IF x<4 OR x>14 THEN GO TO 8210 

8265 FOR 1=1 TO 6: IF Y=Y(I) THEN IF X=X(I)- 

1 OR X=X(I) OR X=X(I)+1 THEN GO TO 8210 

3270 NEXT I 

8280 PRINT OVER 1iAT y,x; "MN" 

■)C 3290 LET Y(F)=Y: LET X(F)=X 
8300 BEEP .04,10 
8310 NEXT i 
8400 PRINT AT 18,05" 


8500 DIM F<6): DIM G<6) 

3510 FOR F=1 TO 6 

3610 LET Y=INT <RND*12>+5: LET X=INT (RND*11) 
+ 13 

8620 FOR G=1 TO 6 

3630 IF Y=F(G) THEN IF X=G(G) OR X=G(G)+1 OR 


..to 


48 Battleships 


X=G( G) - 1 THEN GO TO 8610 
8640 NEXT G 

3650 LET F(F)=Y: LET G(F)=X 

8700 NEXT F 

8720 DIM C*(12,12) 

8740 LET scl=0: LET sc2=0 
8300 RETURN 

9000 FOR y=USR "A" TO USR ,, S"+7: READ x: POKE 
y ,x: NEXT y 

9010 DATA 0,0,0,0,224,248,252,254,255,255,255 
,255,254,252,243,224 

9020 DATA 31,31,31,255,255,31,31,31,224,240,2 
43,243,243,243,240,224 

9030 DATA 0,63,63,63,63,63,63,0,0,63,63,255,2 
55,63,63,0 

9040 DATA 0,224,240,248,248,240,224,0,0,0,60, 
63,63,60,0,0 

X?050 DATA 0,0,252,254,254,252,0,0,0,0,0,222,2 
55,222,0,0 

9060 DATA 128,128,128,123,123,128,128,255,129 
,129,129,129,129,129,129,255 

9070 DATA 0,2,34,59,63,255,127,0,0,0,32,48,12 
0,126,124,0 

9080 DATA 0,38,41,41,41,41,38,0,0,20,20,20,20 
,20,20,0,0,76,32,63,72,30,94,0 

9090 DATA 128,123,208,164,254,231,255,255,128 
,123,136,151,200,174,252,255 
9999 RETURN 


49 


Tanx 


Tanx is a two player game in which two guns are placed on either side of a 
range of randomly generated hills. Each player takes turns in attempting 
to hit the gun on the other side by entering the angle and velocity of fire. 
The winner is the player with the highest score after a total of seven hits 
have been made. Your best chance of success is to use the smallest 
possible angle of elevation for a given velocity and, at higher speeds, it 
may be possible to fire through one of the hills. 

1 REM-T A N X- 

2 REM - @ PAUL STANLEY - 

5 RANDOMIZE 

10 BORDER 0: INK 7: PAPER 0: CLS 

12 GO SUB 7000 

15 LET scl=0: LET sc2=scl 

20 GO SUB 9000 

30 LET c=0: GO SUB 3000 

35 IF RND >.5 THEN LET c = c + l: GO SUB 700 

40 GO SUB 100 

44 LET c=c+l 

45 IF c = S THEN CLS : GO TO 30 

46 GO SUB 700 

47 LET c=c+l 

43 IF c=8 THEN CLS : GO TO 30 

50 GO TO 40 

100 PRINT FLASH 1iAT 21,125"PLAYER 1": INPU 
T "ENTER ELEVATION (0 TO 90) ”ia 

110 IF a>90 OR a<0 THEN GO TO 100 
115 INPUT "ENTER VELOCITY (2 TO 10) "5v 

120 IF v<2 OR v>10 THEN GO TO 115 

121 LET sl=fl 
124 LET ol = -fl 

130 LET max=100+5*v 

140 LET e=a/10 

160 FOR g=3 TO 255 STEP v 

175 IF sl>0 THEN IF sl<175 THEN IF g>10 TH 
EN IF POINT (g,si)=1 THEN LET k=g: BEEP .2. 
0; BEEP .2,-15: GO TO 200 
177 IF sl>0 THEN IF sl<175 THEN PLOT g,sl 
130 LET s1=s1+(e AND q<max)-(e AND q>=max) 





50 Tanx 


190 LET e=e-(e/8 AND g<max)+(e/4 AND g>=max) 

191 NEXT g 
195 LET k=255 

200 LET sl=21.5-sl/8: IF (INT sl=q2 AND k>24 
7) OR ATTR ( q2,311=71 THEN GO TO 1000 
205 LET e=a/10: FOR g=8 TO 255 STEP v 
210 IF g = k THEN RETURN 

220 IF ol>0 THEN IF ol<175 THEN PLOT OVER 
1!g,ol 

230 LET ol=ol+(e AND g<max)-(e AND g>=max) 
240 LET e=e-(e/8 AND g<max)+(e/4 AND g>=max) 
250 NEXT g 
260 RETURN 

483 IF c=9 THEN CLS : GO TO 30 
700 PRINT FLASH 1;AT 21,125"PLAYER 2": INPU 
T "ENTER ELEVATION (0 TO 90) “ ; a 

710 IF a>90 OR a<0 THEN GO TO 700 
715 INPUT "ENTER VELOCITY (2 TO 10) H ;v 

720 IF v< 2 OR v>10 THEN GO TO 715 

721 LET s 1 =-f 2 
724 LET o 1 = -f2 

730 LET max=155-5*v 

740 LET e=a/10 

760 FOR g=247 TO 0 STEP -v 

775 IF sl>0 THEN IF sl<175 THEN IF g<239 T 
HEN IF POINT (g,si)=1 THEN LET k=g: BEEP .2 
,0: BEEP .2,-15: GO TO 300 
777 IF sl>0 THEN IF sl<175 THEN PLOT g,sl 
780 LET sl=sl+(e AND g>max)-(e AND g<=max) 

790 LET e=e-(e/3 AND g>max)+(e/4 AND g<=max) 

791 NEXT g 
795 LET k=0 

300 LET sl=21.5-sl/3: IF (INT sl=ql AND k<8) 
OR ATTR (ql,0)=71 THEN GO TO 2000 
305 LET e=a/10: FOR g=247 TO 0 STEP -v 
810 IF g=k THEN RETURN 

320 IF o1>0 THEN IF ol<175 THEN PLOT OVER 

830 LET ol=ol+(e AND g>max)-(e AND g<=max) 
840 LET e=e-(e/3 AND g>max)+(e/4 AND g<=max) 
350 NEXT g 
360 RETURN 

1000 PRINT AT q2,31 ! 11 " 

1010 FOR f=l TO 50: BEEP .002,RND*25: PLOT 25 



Tanx 51 


5-RND*20,<21-q2)*S+RND*15: NEXT f 

1030 LET scl = sc1+1 

1040 GO TO 2500 

2000 PRINT AT q1,0;“ - 

2010 FOR -f = l TO 100: BEEP .002,RND#25: PLOT 0 
+RND*20, (21-ql ) *8+RND#15: NEXT -f 
2030 LET 5c2=sc2+1 
2040 GO TO 2500 

2500 CLS : PRINT AT 10,5PLAYER 1 HAS ";scl; 
“ POINT"; (“S" AND scion ; AT 13,5; “ PLAYER 2 H 
AS ” ;sc2;" POINT”;<"S“ AND sc2<>l) 

2510 IF sc 1+sc2=7 THEN PRINT AT 16,8; FLASH 
1 ; 11 G A M E OVER”; FLASH 0;AT 19,2;”PRESS 
ANY KEY TO PLAY AGAIN”: PAUSE 0: CLS : LET sc 
1=0: LET sc2=sc1: GO TO 30 
2520 PAUSE 200: CLS : GO TO 30 

7000 LET q1=0: LET q2=10: LET e=21: LET v=31: 
FOR f =21 TO 1 STEP -1 

7010 PRINT INK 4 ; AT f,ql;"T";AT -f,q2; INK 5; 
"A"; INK 6; AT f,e;"N"; INK 7;AT f,vJ"X* 

7020 BEEP .03, f 

7025 IF f>l THEN PRINT AT -f,qli" " ; AT f , q2; " 
";AT f,e;” "; AT -f, v; - " 

7030 LET q1=q1+.6: LET q2=q2+.2: LET e=e-.25: 

LET v=v-.65 
7040 NEXT -f 

7050 PRINT "The 2 players take it in turn toe 
nter the angle and velocity at which they wan 
t to -fire to try and hit their opponent." 
7060 PRINT "The shells must be fired over t 
he hills but if you are lucky your shell may 
be able to go through a hill (particular! 
y at the higher speeds.)" 

7070 PRINT "The winner is the player who hash 
it his opponent the most after a total of 7 h 
its have been made" 

7075 PRINT "To stand the best chance of h 

itting your opponent try to use the smalle 
st possible angle of elevation." 

7077 PRINT "The flashing caption at the b 

ottom of the screen indicates whose go it is 

7080 FRINT "PRESS ANY KEY TO START" 

7090 PAUSE 0: CLS : RETURN 





52 Tanx 


8000 LET q=13-RND*13 

8010 FOR -f =2 TO 29 

8020 FOR g=21 TO q STEP -1 

3030 PRINT INK 3; PAPER 5; AT g, -f 5 "C " + < "CC" A 
ND -f =29 ) > AT g,f-2 j ( " CC " AND -f =2) 

8040 NEXT g 

8050 LET q=q+RND*4-RND*4 

8060 IF q< 3 THEN LET q=4+RND*2 

8065 IF q >20 THEN LET q=20 

8070 NEXT i 

8100 FOR -f = l TO 21 

8110 IF SCREEN* <-f,0)<>“ " THEN PRINT INK 4 

5 AT -f-1,0! BRIGHT 1} "A” 

8114 IF SCREEN* <-f,0)<>" " THEN LET -fl=(21--f 

) *8+16: LET ql=-f -1 : GO TO 8116 

8115 NEXT -f 

8116 FOR f = l TO 21: IF SCREEN* (f,31)O n " TH 

EN PRINT INK 4;AT -f-1,31; BRIGHT 1 ; "B“ 

8117 IF SCREEN* <-f,31><>“ " THEN LET -f2=(21- 

i )*8+16: LET q2=f-l: RETURN 

3120 NEXT -f 

9000 FOR -f =USR "a" TO USR "c"+7: READ g: POKE 
■f , g : NEXT -f 

9010 DATA 0,1,2,60,56,255,255,127,0,123,64,60 
,28,255,255,127 

9020 DATA 170,85,170,85,170,85,170,85 
9100 RETURN 



53 

Defend 


Yet again the Earth is under attack from the Alien hordes, and as always 
the fate of humanity is in your hands. This time the aggressors are out to 
capture humanoids for their debauched cloning experiments, and the 
ever cooperative humans have gathered on the (randomly generated) 
hillsides to watch the action. So it’s all down to you. You must shoot 
down the Alien craft with your powerful laser before it can lay its hands 
on the populace. Failing that, you have a chance of shooting it down once 
it has the human in tow, but be warned: if the Alien craft is too high, the 
humanoid loses its life and you lose points. And never forget — Aliens 
invariably bite back! 

1 REM Defend 

2 REM @ PAUL STANLEY 1982 

3 RANDOMIZE : BORDER 0: INK 

S 

4 LET h1=10 

5 LET 1i=2 

6 LET hs=0 

7 GO SUB 3000 

10 RESTORE : GO SUB 2000: GO 

15 GO SUE 1170: BEEP .1,0 

19 PRINT AT 21,8;"FUEL:";c*< 

,14;“Hi:“;hs: frint over i;at 
104,0: DRAW 80,0: DRAW 0,7: DRAW -80,0: DRAW 
0,-7: IF 1i=2 THEN PRINT AT 21,1; INK 3 ;"CD“ 

20 PRINT OVER 1; INK 5;AT b,a; “B ";AT b+l,a 
i a* 

21 PRINT AT 0,0;"Captures:";cap;AT 0,22;“Sc 

ore: ";sc;" ” 

22 IF RNDC.08 AND b<=lt THEN GO SUB 500 

27 PRINT OVER 1;AT b,a; “B ">AT b+l,a;a* 

30 IF ATTR (b+2,a)=4 AND a*=" " THEN LET a 

*="4": LET c=c+1: LET m=l: PRINT AT b+2,a; n " 

37 IF m=l THEN LET b=b-INT (RND*3): GO TO 
45 

40 IF SCREEN* (b+2,a)=" " THEN LET b=b+<IN 

T (RND*2)) 

42 IF SCREEN* <b-l,a)<>“ " THEN LET m=l: L 
ET c=c+l 


7: PAPER 0: CL 


SUB 1000 


TO 10-hl);AT 0 
y , 15;b*: PLOT 




54 Defend 


45 IF b<1 THEN LET b=l 

47 IF c = 3 OR b >17 THEN CLS : GO SUB 1000: 
GO TO 19 

50 LET a=a-1 

55 IF a=-1 THEN LET a=31: LET m=0: IF a$=" 

4" THEN LET cap=cap+l: BEEP .1,0: BEEP .1,12 
: BEEP .1,0: BEEP .1,12: LET a$=" “ 

56 PRINT OVER 1;AT y,155b$ 

57 LET y=y+(IN 63486=254 AND y<=lt)-<IN 634 
36=253 AND y>l) 

53 IF IN 61438=253 THEN IF b*=''CD a THEN L 
ET b%=“££ n : GO TO 60 

59 IF IN 61433=253 THEN LET b$="CZ>" 

60 PRINT OVER 1;AT y,15; INK 6 5 b$ 

61 IF cap = 3 OR hl=10 THEN PRINT AT 0,95cap 
: GO TO 800 

66 IF IN 61438=254 THEN GO SUB 100 
70 GO TO 20 

100 LET i = 119*(b*= ,, 6V r " ) + 136* < b$= 11 “ ) : LET j 

=(21-y)#8+3 
106 PLOT i,j 

110 IF b¥= "CD" THEN BEEP .05,20: DRAW 90,0: 
BEEP .04,0: BEEP .03,-5: PLOT OVER 1; i , j : D 
RAW OVER l;90,0 

120 IF t>*=“££" THEN BEEP .05,20: DRAW -90,0 
: BEEP .04,0: BEEP .03,-5: PLOT OVER 1;i,j: 
DRAW OVER 15-90,0 

121 IF y=b AND <<b$="CZ?" AND a>16 AND a<29) 
OR (b %="££” AND a<15 AND a>2)) THEN GO TO 20 
0+ <100 AND a$="4") 

130 RETURN 

200 LET rn=0: INK 6: PRINT AT b,a;”<9": BEEP . 
03,-10: PRINT AT b,a 5 INVERSE 1 ; n G": BEEP .03 
,-16: PRINT AT b,a j “G”: BEEP .03,-10: PRINT A 
T b , a5 INVERSE 1 ; "<9" : BEEP .05,-20: PRINT AT 
b, a5 11 (3" : BEEP .03,-3: PRINT AT b,a5” - : INK 7 

: LET b=1+INT (RND#14): LET a=31 
206 LET sc=sc+10 
215 LET a*=" " 

220 RETURN 

300 BEEP .02,-5: PRINT AT b,ai H 6": BEEP .04, 
-9: PRINT INVERSE 1 5 AT b,a;"(3": BEEP .04,-3: 
PRINT AT b,a5 "6": BEEP .04,-10: PRINT AT b,a 





Defend 55 


305 LET -f =0: FOR d=b+l TO 19 

310 PRINT AT d , a 5 "A": BEEP .02,d*2 

320 LET -f=-f + l 

325 PRINT AT d,a5" " 

330 IF SCREEN* <d+l,a)<>" " THEN GO TO 360 
350 NEXT d 
355 GO TO 380 

360 LET o=RND: IF o>.35 AND f >9 THEN LET sc 
= sc - (50 AND sc >=50) -(sc AND sc<50): FOR + = -30 
TO 0: PRINT AT d +1 , a 5 INK RND*4+ 3; "6 ": BEEP 
. 03 ,-f: NEXT -f : PRINT AT d+l,a;" " : GO TO 372 

370 PRINT AT d+l,a; INK 4; "A" 

372 IF o< =.35 THEN GO TO 400 
375 LET m=0 

380 LET a*=" LET a=31: LET b=INT (RND*14> 
+1: RETURN 
400 FOR f = l TO 4 

410 PRINT INK 4; AT d + l,a;"/9": BEEP .1,2: PR 
INT INK 4; AT d + l,a;" " 5 AT d,a;"/4": BEEP .1,4 

: PRINT AT d, a j 11 NEXT -f 

420 PRINT AT d+l,ai INK 4;" >4” 

430 PRINT OVER 1;AT d-1,a-25"I’M OK!“;AT d, 
a;”I": FOR f=0 TO 100: NEXT i : PRINT AT d-l,a 
-2; OVER 15 "I’M OK!"5 AT d,a; ” I " : GO TO 375 
500 IF a>15 THEN LET dir=-30: LET stx=a*3-l 
510 IF a< = 15 THEN LET dir=80: LET stx=a*8+8 
520 PLOT stx,<21-b)*8+3: BEEP .01,40: DRAW d 
i r , 0 

525 PLOT OVER 1;stx,(21-b)*3+3: BEEP .01,20 
: DRAW OVER 15 dir ,0 

530 IF b=y THEN IF <a<27 AND dir=-80> OR (a 
>4 AND dir =80) THEN GO TO 560 
540 RETURN 

560 PRINT AT y,15; OVER l;b*: LET a=15 
565 PLOT OVER 15120,(21-y)*3+3: DRAW OVER 
15 7,0 

570 FOR v=l TO 6 

580 PRINT INK 6;AT y + v/2,a+v5 “C" 5 AT y-v/2,a 
+ v; "D" 5 AT y + v/2, a-v; "if* 1 ; AT y-v/2 , a-v 5 "F " 

590 BEEP .01,30-v 

600 PRINT AT y + v/2,a + vj" "5 AT y-v/2,a-v;" "5 

AT y + v/2,a-v5” ”5 AT y-v/2,a+v5" " 

610 NEXT v 
620 LET 1i=1i-1 




56 Defend 


630 IF 1i< >0 THEN CLS : 60 SUB 1000: GO TO 
19 

800 FOR -f = l TO 2: RESTORE 8000: FOR a=l TO 8 
: READ b.y: BEEF b,y: NEXT a: NEXT -f 
810 PRINT AT 10,7; FLASH 1;“G A M E OVER 
": PRINT : PRINT : PRINT : PRINT " Press an 
y key to try again” 

815 IF sc >hs THEN LET hs=sc 

820 IF INKEY$<>“” THEN CLS : GO TO 10 

825 GO TO 820 

1000 LET h1= h1 + 1: LET y = 50: LET x=0 
1010 PLOT x , y 

1020 LET a=RND*20: LET b=RND*20-RND*20 

1030 LET x=x+a: LET y=y+b 

1040 IF x >251 THEN GO TO 1080 

1050 IF y<10 OR y >60 THEN LET x = x-a: LET y=y 

-b: GO TO 1020 

1060 DRAW a,b 

1070 GO TO 1020 

1080 FOR x=0 TO 24 STEP 3 

1090 LET a=INT (RND*6)+x 

1095 LET f =20 

1100 FOR b=4 TO 21 

1110 IF SCREEN* (b,a)< >“ ” THEN PRINT AT b,a 
; INK 4;”/?": LET b=b + 2 

1120 NEXT b: NEXT x 

1121 FOR T=ll TO 17: FOR y=0 TO 31: IF SCREEN 

* <-f,y)<>" " THEN LET lt = -f-l: GO TO 1130 

1122 NEXT y: NEXT -f 
1130 LET y=5: LET c=0 
1135 LET b*="CD" 

1140 LET a=31: LET b=l 

1160 LET m=0 

1164 PRINT AT 21,1;” 

1165 IF 1i=2 THEN PRINT AT 21,1; INK 3]"CD" 
1168 RETURN 

1170 LET sc=0: LET cap=0: LET c=0 
1132 LET hl=0: LET 1i=2 
1200 RETURN 

2000 FOR a=USR "a” TO USR "g"+7: READ b: POKE 
a, b: NEXT a 
2010 RETURN 

2020 DATA 28,28,8,62,8,8,20,34 

2030 DATA 0,24,60,66.255.126.66.BIN 01100110 





Defend 57 


2.040 DATA 0,0, 199,BIN 11001100,255,255,3,0 
2050 DATA 0,0,240,24,255,252,224,0 
2060 DATA 0,0, 15,24,255,63,7,-0 

2070 DATA 0,0,BIN 11100011,BIN 00110011,255,2 
55,192,0 

2080 DATA 196,9,BIN 10110000,6,208,74,145,BIN 
01100100 

3000 FOR a=l TO 30: PRINT AT RND*21,RND#26; I 
NK RND*3+4;"DEFEND": BEEP .01,RND*10: NEXT a 
3010 PAUSE 100: CLS 

3020 PRINT "A -fleet of aliens have managed t 
o get past defensive lines on Earth. One by 
one they fly in with the sole intent of pic 
king up Humanoids which have climbed to the t 
op of the hills to see what is happening." 
3030 PRINT : PRINT "Your job is to prevent th 
e fleetfrom capturing the Humanoids. You ha 
ve a powerful laser with which to shoot down 
the aliens." 

3040 PRINT : PRINT "CONTROLS ARE: 

1.Down 2. 

.Up 9.Change 

direction 0. . . ..Fire" 

3041 PRINT : PRINT : PRINT INVERSE 15"Press 
any key to continue": PAUSE 0 

3045 CLS 

3050 PRINT : PRINT "You have been defeated wh 
en 3 Humanoids have been captured.": PRINT 
: PRINT "It is alright to shoot at alienswhic 
h are clutching a Humanoid as long as he doe 
s not fall too far (if he does you forfeit 50 
points) . " 

3060 PRINT "Note that only green Humanoids a 


re attractive to the aliens.": PRINT : PRINT 
"Don’t underestimate your enemy invader, he 
may have a trick up his sleeve.": PRINT : 

PRINT "Every so often the computer willtake 
you to a new location at the expense of som 
e of your fuelwhich if zero will end the game 


.”: PRINT : PRINT INVERSE 1;"Press any key t 
o continue": PAUSE 0 
3065 CLS 
3070 RETURN 

8000 DATA .1,11,.1,11,.3,16,.05,11,.05,16,.05 
,11,-05,16,1,20 









58 


Flying Bomb 


The year is 1943. You are a wartime test-pilot under orders to conduct a 
series of tests on a powerful new flying bomb which, if it proves its 
mettle, could bring D-Day that much closer. Your instructions are to try 
out the new wonder weapon on a Nazi bunker (situated at the bottom 
right of your TV screen). You can only drop one bomb per run, and 
because you’ve never grappled with these devices before, it’s going to 
take you a while to get the hang of the controls. But do your best. Your 
country is depending on you! 


10 PAPER l: INK 7: BORDER 5 
15 LET SC = 0 

20 LET PO=0: LET CR=0: LET DIST=270000: LET 
DC=DIST: LET TH=1000: LET D=0: LET H=4: LET 
DK=D: LET HK=H: LET S=150 
40 GO TO 610 

100 CLS : PRINT INVERSE 1;"FLYING BOMB" 

105 PRINT INVERSE 1;AT 2,05"SCORE: ";AT 2 

, 6; SC 

110 PRINT INVERSE 1;AT 0,14;"MLS TO TARGET: 

”;AT 1,13;"HEIGHT FT: ";AT 2,185"SPEED 

NTS: 

120 PRINT AT 13,0; PAPER 5;" 

150 PRINT AT 20,0; PAPER 2 ; “USE ’ A8cZ ’ KEYS FOR 
HEIGHT,’NkM’FORSPEED AND ’K’ TO RELEASE BOMB 


170 PRINT INK 3; AT 14,31; "£";AT 15,30; "FB" 5 
AT 16,29; "FM" ; AT 1 7,23 ; " III " 

199 REM **MAIN ROUTINE 

220 PRINT INVERSE 1;AT 1,28!" " ;AT 1,28; 

INT ((17-H)*100-20) 

230 PRINT INVERSE 1!AT 0,28;" ” ; AT 0,28; 

(27-D)/5 

240 PRINT INVERSE 1;AT 2,28;" " ; AT 2,28; 

S*2 

250 PRINT AT HK,DK ;" ";AT H,D; INK 4;"/9S";: 

LET HK=H: LET DK=D 

300 LET A=PEEK 23556: IF A=255 THEN GO TO 3 
60 



Flying Bomb 59 


305 IF A= 77 THEN LET 3=S+5: IF S>195 THEN 
LET S=195 

310 IF A=78 THEN LET S=S-5: IF S<45 THEN P 
RINT AT 16,0; FLASH 15"STALLED!": GO TO 850 
320 IF A=65 THEN LET H=H-.1 

330 IF A=90 THEN LET H=H+. 1 .* IF H>16.8 THEN 
GO TO 750 

340 IF H<2.2 THEN LET H=2.2 

350 IF A=75 THEN PRINT INK 4; AT HK, DK ; "AC 11 
;: GO TO 500 

360 IF H >13 AND D>27 THEN GO TO 780 

399 REM **MOVE CLOSER 

400 LET DC=DC-S: LET D=INT ((DIST-DC)/TH) 

405 IF D >30 THEN GO TO 810 

410 GO TO 200 

500 REM **BOMB DROPPED 

510 LET Y=1: LET V=H+1: LET F=D+1: LET HK = V: 
LET DK=F 

530 LET X=Y*Y*<l-S/200) 

531 BEEP .01,-20 

535 LET V=V+X/40: LET F=F+Y/8 
550 IF VMS AND F>28 THEN GO TO 710 
570 IF V >18.5 OR F>31 THEN GO TO 810 
575 PRINT AT HK,DK;" "; 

580 PRINT AT V,F; “D" 

585 LET HK = V: LET DK=F 
590 LET Y=Y+l: GO TO 530 
600 REM ##initialisation 

610 FOR x=0 TO 7: READ a,b,c: POKE USR "A "+ x 
, a: POKE USR "5 ,, +x,b: POKE USR "C"+x,c: NEXT 

620 FOR x=0 TO 7: READ a: POKE USR ”Z>"+x,a: 
NEXT x 

630 FOR x=0 TO 7: READ a: POKE USR “£'• + *,*: 
NEXT x 

640 FOR x —0 TO 7: READ a: POKE USR "F”+x,a: 
NEXT x: GO TO 100 
699 REM ** WON GAME 
710 PRINT AT HK,DK5" "5 

720 PRINT AT 16,115 FLASH 1;“CONGRATULATIONS 

725 LET SC = SC+l: PRINT INVERSE 15 AT 2,6;SC 
730 PRINT PAPER 7; INK 2; FLASH 15 AT 14,31; 
";AT 15,30;" ";AT 16,29;" " ;AT 17,28;" 


60 Flying Bomb 


735 FOR X=1 TO 10: BEEP .01,10: BEEP .01,+5: 
BEEP .01,15: NEXT X 

740 FOR X=1 TO 100: NEXT X: RESTORE : GO TO 
20 

749 REM #DITCHED 

750 PRINT INK 2;AT 16,11; FLASH 1;"DITCHED! 
": GO TO 900 

779 REM **CRASH ON TARGET 

780 PRINT AT 16,11;"THAT’S CLEVER!": GO TO 7 
30 

800 REM **LOST GAME 
810 PRINT AT HK,DK;" 

320 PRINT INK 2; PAPER 6;;AT 16,11; FLASH 1 
; " LOST ! " 

830 GO TO 900 
340 REM fcSTALLED 

350 FOR X=H TO 17: PRINT INK 4;AT X,D;" ”; 

AT X+l,D; "AB": NEXT X 

900 FOR X=1 TO 10: BEEP .05,-10: BEEP .05,5: 

BEEP .05,-5: NEXT X 

910 FOR X=1 TO 100: NEXT X 

920 RESTORE : GO TO 20 

998 STOP 

999 REM plane 

1000 DATA 192,0,0,64,0,0,127,248,248,26,175,1 
75,15,254,254,0,190,0,0,127,0,0,190,0 

1009 REM #bomb 

1010 DATA 0,0,0,0,0,190,127,190 

1019 REM dam 

1020 DATA 64,64,64,64,64,64,64,255 
1030 DATA 1,3,7,15,31,63,127,255 

3999 STOP 

4000 PAPER 7: INK 0: BORDER 7: CLS 
3999 STOP 

9000 FOR y=0 TO 7: INPUT a*: LET t=0: FOR x = l 
TO 8: LET t=t+2~<3-x)*VAL a*(x): NEXT x: PRI 
NT t 

9010 POKE USR "4"+y,t 
9020 NEXT x: NEXT y 
9030 PRINT "4" 


61 

Radiopower 


This is a multi-player game, with each player running a radio station in 
competition with other players’ stations. After registering your station 
you then get the choice of show presenters to hire. Some are high priced, 
some are cheap, and the expensive ones are better audience “draws”. 

The choice of presenters will effect how well your station will produce 
the type of show you want, since the presenters near the beginning of the 
alphabet (Aardvark, Boulder, etc.) are great for talk shows and news, 
but no good for music. Those in the middle are OK for all sorts of shows 
in an average way, so that Jetsetter and Ricky Radio can handle general 
shows, with say 50% music but the ace DJs you need for a pop radio 
station are to be found near the end of the alphabet, and you need these 
for high percentages of music on your programs. 

The percentage of music you are going to have on your station has to be 
entered, and this is followed by the number of radio cars you want to 
run, to be used for covering local events and thus typifying your 
community spirit. 

Your station is funded by advertising, so you have to spend money on 
promotion, to get the populace listening, and hence make advertising on 
your station desirable. 

The computer then displays the broadcast area for all the stations, 
spreading the call-sign of the stations over the map. Another annual 
review comes up and you get the chance to alter the composition of your 
station to get a greater edge. Play continues until someone conquers the 
airwaves over the South Coast, stations with no listeners dropping out of 
the game. 

1 REM RADIOPOWER B 

Y H. WALWYN FOR THE CBM 64 

CONVERTED FOR THE 48K S 

PECTRUM BY ANDY GREEN 

10 RESTORE : PRINT PAPER 2; INK 6; FLASH 1 
i " INITIALISING"; FLASH 0!" PLEASE WAIT. 


20 POKE 23658,255: REM CAPS LOCK 

30 DIM I$<13>: DIM H*(15>: DIM G$(10): DIM 




62 Radiopower 


N$<25,15): DIM S$(25,15>: DIM P<4,25): DIM T( 
25,2): DIM T$(25,13): DIM S(25): DIM R<25) 

40 DIM B*(23,15): DIM M(23): DIM B(23): DIM 
N (23) 

50 FOR 1=1 TO 23: READ B$(I),M(I),B(II: NEX 
T I 

59 REM ** DATA FOR PRESENTERS’NAMES, QUALIT 
Y RATING AND PRICE 

60 DATA "ARNOLD AARDVARK",1,50000 

61 DATA "BRIAN BOULDER ", 2,30000 

62 DATA "CLARA CUTHROAT",5,45000 

63 DATA "DINA DINAMICK",10,25000 

64 DATA "EDDIE EEL",15,10000 

65 DATA "FREDA FOOLISH", 20,10000 

66 DATA "GERRY GULLIBLE", 25, 10000 
"HARRY HATEFUL",30,15000 
"IZZY IDLETALK",35,10000 
"JOLLY JETSETTER",40,25000 
"KING KNIFE",50,20000 
"MOLLY MUD”,50,10000 
" NED NORMAL " , 50,20000 
'POLLY PERSPEX",60,10000 

74 DATA "RICKY RADIO",65,25000 

75 DATA "SALLY SONIX",70,15000 

76 DATA "TOMMY TAPE " , 75,30000 

77 DATA "UNCLE USELESS ", 80,10000 
"VICTOR VROOM",85,25000 
"WALLY WETLOCK",90,10000 

80 DATA "XANDRA XEXY" , 95,40000 

81 DATA "YALE YESTERYEAR ", 98,45000 

82 DATA "ZOOT ZIEGLER",99,50000 
100 DIM D*<22,32) 

105 FOR 1=1 TO 20: READ D$(I) 

106 NEXT I 

107 FOR 1=1 TO 25: LET P(2,I)=100000: NEXT I 

109 DATA "++++++++++++++++++++++++++++++ 

110 DATA "+ STOCKBRIDGE o 

112 DATA "+SALISBURY o WINCHESTER o 

113 DATA ”+ 

116 DATA "+ TWYFORD o 

117 DATA "+ ROMSEY o P/FLD i 

113 DATA "+ CHNDLRS/FORD o 

119 DATA "+ EASTLEIGH o 

120 DATA "+ B/WALTHAM o 


DATA 

68 DATA 

69 DATA 
7© DATA 

71 DATA 

72 DATA 

73 DATA 


78 DATA 

79 DATA 




Radiopower 63 


121 DATA 

122 DATA 

123 DATA 

124 DATA 

125 DATA 

126 DATA 

127 DATA 

128 DATA 


+F/BRIDGE o 
+ TOTTON 


LYNDHURST o 
RINGWOOD o 
B/HURST 


## o SOUTH/TON+ 
##WICKHAM a + 


###### 


129 DATA " +C /CHURCH MTH#o+ “ 

130 DATA "+o B/MTH#######################+ 

131 DATA "++++++++++++++++++++++++++++++++" 

190 FOR 1=1 TO 20: READ T<I,1),T(I,2): NEXT 
I: REM ** READ IN COORDINATES OF THE VARIOUS 

TOWNS 

191 DATA 3,23,4,11,4,27,6,28,7,13,7,30,8,21, 
9,24,10,27,11,10,12,15 

192 DATA 13,20,14,28,15,13,16,11,16,30,17,14 


,19,10,19,30,20,1 

193 FOR 1=1 TO 20: READ T$(I): NEXT I: FOR I 
=1 TO 20: READ S(I): NEXT I: REM ** READ IN P 


LACE NAMES 

194 DATA "STOCKBRIDGE","SALISBURY","WINCHEST 
ER”, " TWYFORD " , "ROMSEY", 11 PETERSFI ELD " 

195 DATA "CHANDLERS FORD”,"EASTLEIGH“,"BISHO 
PS WALTHAM","FORDINGBRIDGE","TOTTON” 

196 DATA "SOUTHAMPTON","WICKHAM","LYNDHURST" 
,"RINGWOOD","FAREHAM","BROCKENHURST" 

197 DATA "CHRISTCHURCH","PORTSMOUTH","BOURNE 
MOUTH",1,3,4,2,2,2,1,2,1,1,1 

198 DATA 5,1,1,2,2,1,1,5,5 

199 REM ** DISPLAY MAP 

200 PAPER 4: BORDER 5: INK 0 

205 CLS : PRINT AT 2,0! 

210 FOR 1=1 TO 20: PRINT PAPER 2; INK 6;D$( 
I): NEXT I 

250 FOR 1=1 TO 25: IF N*<I,15)<>"#” THEN GO 

TO 270 

260 PRINT AT T(I,1),T<I,2)j PAPER 3; INK 5; 
S$(1,1) 

270 NEXT I 

300 PRINT AT 0,0! PAPER 6;"SPACE"; PAPER 4;” 

FOR AUDIENCE REACTION. PAPER 5;"ENTER" 

; PAPER 4;" TO SPEAK TO ME." 

310 LET A$=INKEY$: IF A$="” THEN GO TO 310 




64 Radiopower 


315 IF A*=" ” THEN GO TO 700 
317 IF A$< >CHR$ 13 THEN GO TO 310 
320 GO SUB 5000 
693 GO TO 200 

699 REM ** GOSUB DISPLAY REACH ON MAP 

700 PAPER 3: BORDER 1: INK 6 

702 CLS : PRINT "HAS EVERYONE DONE THEIR ANN 
UAL PROGRAMME REVIEW?(Y,N)"; 

703 LET A*=INKEY*: IF A*="" THEN GO TO 703 

704 IF A$="N " THEN PRINT A*: GO TO 200 

705 IF A*< > *Y" THEN GO TO 703 

706 PRINT A* 

707 CLS : PAPER 4: BORDER 4: INK 0 

710 PRINT AT 2,0;: FOR 1=1 TO 20: PRINT PAP 
ER 3;D*<I): NEXT I 

730 FOR 1 = 1 TO 25: IF N* ( I , 15 )<>“•#■ ” THEN GO 
TO 795 

790 PRINT AT T(I,1),T(I,2); PAPER 5; INK 2\ " 
<S“ 

795 LET P(3,I)=0: NEXT I 
797 LET QQ=1 

300 LET PP=0: FOR 1=1 TO 25 
310 IF N*<I,15)<>THEN GO TO 950 
815 IF P<1,I)*10<QQ THEN GO TO 950 
320 LET PP=1 

825 LET PX=T(I,2): LET PY=T(1,1) 

330 LET DX=INT (RND*3)-1 
335 LET DY=INT (RND*3)-1 
340 LET K=CODE SCREEN* <PY+DY,PX+DX> 

860 IF K=35 OR K=64 OR K=CODE S*(I) THEN GO 
TO 930 

870 IF K=43 THEN GO TO 825 

374 FOR M=1 TO 20: IF N*<M,15)<>"*" OR S*(M) 
=S*(I) THEN GO TO 376 

375 IF CODE S*(M,1)=K THEN GO TO 830 

376 NEXT M: GO TO 900 
880 LET P(3,10 =P(3,M>-1 

385 FOR X=1 TO 5: PRINT AT PY+DY,PX+DX" 

836 FOR Z=1 TO 50: NEXT Z: PRINT AT PY+DY,PX 

+DX>” -: NEXT X 

900 PRINT AT PY+DY,PX+DX; PAPER 1; INK 6; FL 
ASH 1;S*(I,1): BEEP .02,3 
904 LET FY=PY+DY: LET PX=PX+DX: LET P(3,I)=P 


Radiopower 65 


(3,I)+l 
910 GO TO 950 

930 LET PY=FY+DY: LET PX=PX+DX 

950 NEXT I 

960 LET QQ=QG+1 

970 IF PP=0 THEN GO SUB 9000: GO TO 1000 
980 GO TO 800 

1000 PRINT AT 0,0?"THAT’S THE AUDIENCE REACH 
AT THEMOMENT.": FOR Z=1 TO 75: NEXT Z: PRINT 
AT 0,0;"PRESS SPACE FOR STATION DETAILS. 

1010 LET AS=INKEYS: IF AS<> " " THEN GO TO 10 

10 

1100 REM 

1114 FOR 1 = 1 TO 20: IF NS (I,15)0"# ” THEN GO 
TO 1118 

1116 LET P<2,I)=P<2,I)+P(3,I)*1500 

1117 BORDER l: GO SUB 2000 

1118 NEXT I 

1122 PRINT "SPACE TO RETURN TO BASIC MAP" 

1123 IF INKEYSO” " THEN GO TO 1123 
1125 GO TO 200 

2000 CLS : PRINT -- 


2010 PRINT "RADIO "5SS<I)’"BASED IN ”;TS<I) 
2020 PRINT ’"STATION MANAGER: "5 NS(I) 

2040 PRINT ’"AUDIENCE FIGURES. . . ";P(1,I) 5 " 

2050 PRINT "AUDIENCE APPRECIATION...";P<3,I) 
2060 PRINT ’"MONEY NOW AVAILIBLE. . .£";P < 2,I) 

2062 FOR J=1 TO 23: IF N(J)=I THEN PRINT "PR 
ESENTER. . . " SBS(J) 

2063 NEXT J 

2070 PRINT --” 

2030 PRINT "SPACE FOR MORE DETAILS" 

2090 IF INKEYSO" " THEN GO TO 2090 
2100 RETURN 

4999 REM ** INPUT NEW MOVE 

5000 GO SUB 9000: PRINT AT 0,0;"IS THIS A NEW 
STATION? (Y/N)" 

5003 IF INKEYSO "Y” AND INKEYSO "N" THEN GO 
TO 5003 

5004 IF INKEYS="Y" THEN GO TO 5006 

5005 GO TO 5030 

5006 GO SUB 9000: PRINT AT 0,0;"WHAT IS YOUR 






66 Radiopower 


NAME PLEASE ?": INPUT LINE H$: LET H$<15)="* 

5008 GO SUB 9000: PRINT AT 0,0;"THE NAME OF Y 
OUR STATION ? ": INPUT LINE G* 

5010 FOR 1=1 TO 25: IF S*<I,1)=G*<1) THEN GO 
TO 5013 

5012 NEXT I: GO TO 5015 

5013 PRINT AT 0,0; "SORRY BUT PLEASE CHOOSE AN 
OTHER NAME”: FOR 1=1 TO 200: NEXT I: GO SUB 9 
000: GO TO 5008 

5015 GO S.UB 9000 

5020 PRINT AT 0,0;"RADIO:";G$’"MANAGER:";H$ 

5021 FOR 1=1 TO 100: NEXT I: GO SUB 9000 

5022 PRINT AT 0,0;"BASED IN WHICH TOWN?<PLEAS 
E ".."ENTER "; INVERSE 1 ; " FULL" ; INVERSE 0;" P 
LACE NAME)": INPUT LINE I* 

5023 GO SUB 9000: FOR 1=1 TO 25: IF T$(I)=I* 
AND N*<I,15)="*" THEN GO TO 5026 

5024 IF T$(I)=IS THEN GO TO 5028 

5026 NEXT I: GO SUB 9000: PRINT AT 0,0;"SORRY 
BUT THAT PLACE IS NOT"’"AVAILABLE.“: FOR 1=1 
TO 100: NEXT I: GO SUB 9000: GO TO 5022 

5027 RETURN 

5028 PRINT AT 0,0;"OK. CONGRATULATIONS ON A N 
EW STATION OPENING. GOOD LUCK!" 

5029 PRINT AT T(I,1),T(I,2)J FLASH 1;“@": LET 
S*<I)=GS: LET N*(I)=H*: FOR 1=1 TO 100: NEXT 
I : RETURN 

5030 CLS : PRINT "ENTER YOUR NAME PLEASE:- "; 

: INPUT LINE H* 

5038 FOR 1=1 TO 25: IF N*(I, TO 14)=H*< TO 14 
) THEN GO TO 5050 

5040 NEXT I: PRINT ’"SORRY BUT I HAVE NO RECO 
RD OF THAT NAME": FOR 1=1 TO 100: NEXT I 
5045 RETURN 

5055 CLS : PRINT "RADIO “;S$(I)’”OF ";T$(I) 
5060 PRINT "STATION MANAGERN$ ( I ) 

5070 PRINT "a###############################" 
5080 PRINT "MONEY AVAILABLE...£"JP(2,I) 

5090 PRINT "ft###############################" 
5100 PRINT INVERSE l;"NO. NAME 
PRICE 

5110 FOR J=1 TO 23: IF N(J)<>0 THEN GO TO 51 
30 


Radiopower 67 


5115 IF RND >.45 THEN GO TO 5130 

5120 POKE 23692,255: PRINT J;TAB 6i B*(J);" 

H iB<J) 

5130 NEXT J 

5150 PRINT "DO YOU WANT TO HIRE ONE? (Y/N)" 

5151 POKE 23692,255: LET AS»=INKEY*: IF A$<>”Y 
" AND A*<>"N" THEN GO TO 5151 

5152 IF A$="N" THEN GO TO 5165 

5153 PRINT AT 20,0;"WHICH PRESENTER DO YOU WA 
NT?"’"NUMBER..."5 

5154 GO SUB 8000 

5155 LET B=VAL H %: IF B=100 THEN GO TO 5165 

5156 IF B >23 THEN GO TO 5153 

5157 PRINT A$: PRINT "YOU HAVE £*?P(2,I) 

5160 LET N(B)=I: PRINT 'B*<B>!" JOINSRAD10 

"; s* < I >;" M ! “ 

5165 LET P=0 

5170 PRINT "PRESENTERS ON STATION..."’: LET B 
=0: FOR J=1 TO 23: IF N(J)=I THEN GO TO 5180 
5175 NEXT J: GO TO 5195 

5180 LET B=l: PRINT J5 TAB 5 j B$(J) 5 T AB 25;B(J) 
5185 LET P=P+B(J): GO TO 5175 

5195 IF B=0 THEN PRINT "NO SPECIAL PRESENTER 
S ON STATION" 

5200 PRINT ’"YOUR WAGE BILL IS £”;P 
5202 IF P=0 THEN GO TO 5300 

5205 PRINT "DO YOU WISH TO FIRE ANY OF THEM?< 
Y/N) " 

5210 LET A*=INKEY*: IF A*<>"Y” AND A*<>*N" TH 
EN GO TO 5210 

5220 IF A$="Y" THEN GO TO 5230 
5225 GO TO 5300 

5230 PRINT "WHICH ONE...NO.” 

5231 GO SUB 8000: LET N=VAL H$ 

5232 IF N>23 THEN GO TO 5231 
5235 IF N (N > < > I THEN GO TO 5300 
5240 LET N(N)=0: LET P=P-B(N) 

5250 PRINT B*(N)S“ LEAVES RADIO ”5S*<I) 

5300 LET P(2,I)=P(2,I)-P: IF P(2,I)<0 THEN G 
0 TO 5320 

5310 PRINT --" 

5311 PRINT "YOU NOW HAVE £";P(2,I) 

5315 GO TO 5350 

5320 PRINT "YOU HAVE BANKRUPTED YOURSELF !" 




68 Radiopower 


5325 LET P(2,I)=P(2,I)+P 

5330 PRINT ’"THEREFORE YOU MUST FIRE ONE OF T 
HEM...": 60 TO 5165 

5350 PRINT "-■* 

5355 PRINT "WHAT PERCENTAGE OF YOUR OUTPUT I 
S GIVEN OVER TO MUSIC? (0-100)" 

5357 GO SUB 8000: LET R=VAL H* 

5360 PRINT "-■* 

5365 PRINT ’"RADIO CARS COST £10000 EACH.” 

5367 IF R(I)=0 THEN GO TO 5370 

5368 IF RND >.4 THEN PRINT "ONE OF YOURS HAS 
FALLEN APART": LET R(I)=R(I)-1 

5370 PRINT "YOU HAVE "5R(I);" RADIO CARS, “’N 
% ( I ) 

5380 PRINT "HOW MANY MORE DO YOU WANT NOW?” 

5381 GO SUB 3000 

5382 LET PR=VAL H*: IF PR+R(I)=0 THEN PRINT 
"WHAT HAVE YOU GOT AGAINST RADIO CARS?” 

5383 IF PR+R(I)>5 THEN PRINT "COME ON NOW, N 
0 ONE NEEDS MORE THAN 5.": GO TO 5380 

5385 PRINT "YOU NOW HAVE ”JPR+Rtl);” RADIO CA 
RS, "’N$(I) 

5390 LET P(2,I)=P(2,1)-PR*10000 
5400 IF P(2, I)<0 THEN PRINT "NOT ENOUGH MONE 
Y !!": LET P(2,I)=P(2,I)+PR*10000: GO TO 5380 
5402 LET R(I)=R(I)+PR 

5405 PRINT ’"YOU HAVE £“J P(2,I) , " LEFT” 

5410 PRINT "-" 

5415 PRINT ’"HOW MUCH TO SPEND ON PROMOTOION? 

": GO SUB 8000: LET PM=VAL H$ 

5420 LET P(2,I)=P(2,I)-PM: IF P(2,I)<0 THEN 
PRINT "NO CASH!!!": LET P(2,I)=P(2,I)+PM: GO 
TO 5415 

5600 PRINT "-» 

5605 PRINT ’’"OK. THANK YOU VERY MUCH "’N*(I) 

5700 LET P1=PM*(1+RND)+R(I)*10000*(2+RND)+200 
00*RND 

5710 FOR J = 1 TO 23: IF N(J)OI THEN GO TO 57 
50 

5720 LET PP=ABS (R-M(J)) 

5730 LET P1=P1+B(J>/10*<100-PP) 

5750 NEXT J 

5800 POKE 23692,255: PRINT ’"YOUR PREVIOUS AU 
DIENCE FIGURES WERE...";P(1,I);"%" 






Radiopower 69 


5810 PRINT --" 

5815 LET PI=INT <P1/10000)/10 

5820 PRINT ’"YOUR CURRENT AUDIENCE FIGURES 

ARE. . . ”!PI 5 

5830 IF P1>0 THEN GO TO 5845 

5835 INVERSE 1: PRINT ’“I’M AFRAID THAT NO ON 
E APPEARS TO LISTEN TO YOUR STATION AND 
5838 PRINT "THEREFORE YOU HAVE BEEN REMOVED " 

5840 PRINT "FROM YOUR JOB ! ! ! 

5841 PRINT "RADIO ";S*(I)5” IS 

5842 PRINT, PAPER 2; INK 6\ FLASH l;"OFF THE 

AIR FLASH 0!" SORRY ABOUT THAT, BUT THAT’ 
S SHOW BUSINESS !!! ": INVERSE 0 

5843 LET S*<I>=”": LET P<2,I)=10000: LET P(l, 

I)=0: GO TO 5900 

5845 LET P(1,I)=P1 

5850 PRINT --" 

5855 PRINT ’"RADIO ";S$(1)5" IS" 

5860 PRINT ’"STILL ON AIR..." ” "YOUR AVAILABL 
E MONEY IS"’"£"!P(2,I) 

5870 PRINT ’"...WE SHALL HAVE TO SEE WHAT 
HAPPENS TO YOUR REVENUE WHEN THENEW FIGURES A 
RE TAKEN INTOACCOUNT. " 

5900 PRINT INVERSE i;"SPACE"i INVERSE 0?” TO 
RETURN TO MAP” 

5910 IF INKEYSO” ” THEN GO TO 5910 
5920 RETURN 
7999 STOP 

3000 INPUT LINE H$: FOR X=1 TO LEN H$: IF CO 

DE H$(X><48 OR CODE H*(X)>57 OR H*<X>=“ " THE 

N GO TO 8000 

8010 RETURN 

9000 PRINT AT 0,05” 

" : REM 

64 Spaces 
9010 RETURN 

9998 STOP 

9999 BORDER 7: PAPER 7: INK 0: CLS 





70 


Scuba 


OK, so it’s on with the face-mask and flippers and over the side with 
you. The idea is to catch as many fish as you can for supper. You’re 
armed with a simple fish spear and you just have to swim within reach of 
your prey to catch it. The trouble is, there are some nasty looking sharks 
with their eyes on man meat, and whilst most of the time they seem quite 
content to live and let live, sharks have a reputation for being less than 
predictable! The only other serious problem facing you is that your tank 
only holds three minute’s worth of oxygen, so every now and then you’ll 
have to return to your raft for fresh supplies. The fish (and sharks) are 
programmed to change course at random and you will find it surprisingly 
hard to catch a fish once it is in a ‘panicky’ mood. 


1 REM SCUBA 

BY H. WALWYN FOR THE COMMODORE 

64 

CONVERTED FOR THE 16/48K S 

PECTRUM BY ANDY GREEN 

4 LET AIR=0 

5 POKE 23658,255: REM ## PUTSMACHINE INTO 
CAPS-LOCK MODE 

10 LET Z*="" 

11 LET P=0 

20 GO SUB 9000 
25 GO SUB 5000 
27 GO SUB 3000 

30 REM T$() HOLDS CHARACTER TYPE FOR FISH 
/SHARK 

50 REM ** CHARACTER NUMBERS ARE AS FOLLOW 


51 REM 1,2,3 ARE SHARKS 

52 REM 4,5,6 ARE FISH 
54 REM 7 IS THE SWIMMER 

60 REM X ( ) AND YO ARE SCREEN COORDINATES 

61 REM S$0 HOLDS THE 12 CHARACTERS SE 

E 5000- 

62 DIM X<7): DIM Y<7): DIM S$(12): LET S*=" 

! " "#*%&’(>#+," : REM DOUBLE QUOTES'"' A AREINTENT 
IONAL 

63 REM DO ARE FISH DEPTH 

64 DIM D(6>: DIM T$<6) 


STEPS 


Scuba 71 


65 REM MO ARE FISH MOVE STEPS 

66 DIM M(6) 

67 REM SO ARE FISH RANDOM ISERVARIABLES 

68 DIM S(6): DIM U(6) 

80 REM UO ARE CHARACTER COLOURS 

81 REM SHARKS ARE ALWAYS CYAN 

82 LET U(1)=5: LET U<2)=5: LET U<3)=5 

83 REM FISH ARE DIFFERENT COLOURS ... 

84 REM FISH <#4) IS RED 
35 LET U(4)=2 

86 REM FISH <#5) IS WHITE 

87 LET U f 5)=7 

88 REM FISH (M6) IS YELLOW 

89 LET U(6)=6 

90 REM SWIMMER IS GREEN 

91 LET MC=4 

99 REM ** S=SWIMMER TYPE ** 

100 GO SUB 4000 
120 REM ** FISH SETUP 
130 FOR K=4 TO 6 
135 LET S(K)=1 

140 LET X<K)=0: LET Y(K)=INT <RND*11+11): LE 
T D(K)=INT (RND*3-1) 

165 NEXT K 

190 LET X(7)=23: LET Y<7>=4: LET S=l: LET T= 

1 

210 LET K*=INKEY* 

211 PRINT PAPER 0! INK 4;AT Y<7),X<7>5“ ": 

IF z*="~" THEN PRINT AT Y( 7 ) ,X < 7) > 

219 LET AIR=AIR-1 

220 IF K$="X" THEN GO TO 230 

221 IF T=1 THEN LET AIR=130: GO TO 300 

222 IF K*="E" THEN GO TO 240 

223 IF Y(7)<1 THEN GO TO 300 

224 IF K*="F" THEN GO TO 250 

226 IF K*="S" THEN GO TO 260 

229 GO TO 300 

230 IF T=1 AND Y<7)>4 THEN LET T=0: LET MC= 
5 

232 LET Y(7)=Y(7)+l: IF S=12 THEN LET S-ll: 
GO TO 234 

233 LET S=12 

234 IF Y(7)>21 THEN LET Y(7)=21 
236 GO TO 300 



72 Scuba 


240 LET Y(7)= Y(7)-1: IF S=12 THEN LET S=1X: 
GO TO 244 

242 LET S=12 

244 IF Y(7)<5 AND X<7)>20 AND X<7)<26 THEN 
GO TO 243 

245 IF Y(7)<5 THEN LET Y<7)=5 

246 GO TO 300 

243 LET X(7)=23: IF Y<7)<5 THEN LET MC=3: L 
ET T= I 

249 GO TO 300 

250 LET X(7)=X<7)+1: IF (S<5 AND S>2) THEN 
LET S=ll: GO TO 254 

251 IF S=1 THEN LET S=2: GO TO 254 

252 LET 3=1 

254 IF X(7)>31 THEN LET X(7)=31 
258 GO TO 300 

260 LET X(7)=X(7)-1 : IF S<3 THEN LET S=12: 
GO TO 264 

261 IF 3=3 THEN LET 3=4: GO TO 264 

262 LET 3=3 

264 IF X ( 7) < 0 THEN LET X<7)=0 

263 GO TO 300 

300 LET 2$=SCREEN$ (Y(7),X<7)): PRINT AT Y<7 
) f X < 7) 5 PAPER 0; INK MC;S*<S> 

320 IF CODE Z*>32 AND CODE 2$<45 THEN GO TO 
330 

325 GO TO 400 

330 REM COLLISION OF SWIMMERAND ... ^'^O 
BJECT HELD IN 2$ 

333 FOR K=1 TO 6 

334 IF X(K)=X < 7) AND Y(K)=Y(7) THEN GO TO 3 
45: REM DECIDE WHICHCREATURE THE SWIMMER HAS 

ENCOUNTERED 
340 NEXT K: GO TO 400 

345 IF K< 4 AND S(K)=2 THEN GO TO 615 
347 IF K< 4 THEN GO TO 340 

350 FOR L=1 TO 5: PRINT AT Y(K),X<K)( OVER 1 
; PAPER 0; INK U(K);" ": FOR M=1 TO 10: NEXT 

M 

355 PRINT AT Y(K),X(K); OVER 1; PAPER U(K); 
INK 0;” FOR M=1 TO 10: NEXT M: NEXT L 
360 PRINT AT Y(K),X(K); PAPER 0; INK MC;” “ 

365 LET P=P+1 

370 LET X(K)=0: LET Y(K)=0 


Scuba 73 


330 LET S<K)=0 

400 REM FISH RANDOMISER 

410 LET R=INT <RND*100>+1: IF R>8 THEN GO T 
O 500 

415 IF R>6 THEN LET R=R-3 

420 IF S(R><>0 THEN GO TO 450 

430 LET S(R)=1: IF RND>.5 THEN GO TO 440 

434 LET X <R)=0: LET V(R)=INT <RND*11+10> 

436 LET FS=5: LET M(R)=INT <RND*2+1): LET D< 
R)=INT (RND*3-1> 

437 IF R<4 THEN LET FS=7 

438 LET T*(R)=S$<FS): GO TO 500 

440 LET X(R)=31: LET V(R)=INT <RND*11+10> 

446 LET FS=6: LET M(R)=-INT (RND*2+1>: LET D 
< R)=INT (RND*3-1) 

447 IF R<3 THEN LET FS=9 

448 LET T$(R)=S$<FS): GO TO 500 
450 IF S <R)=1 THEN GO TO 460 

455 LET S(R)=l: IF RND>.5 THEN GO TO 436 
457 GO TO 446 

460 LET D(R)=INT (RND*9-4): LET M(R)=M<R)*2* 
(INT (RND*3-1)) 

470 LET S <R)=2: IF R<4 THEN GO TO 480 
472 IF SGN M(R)=1 THEN LET T*<R)=S$<5) 

474 IF SGN M(R)=-1 THEN LET T$(R)=S*<6) 

475 GO TO 500 

480 IF SGN M(R)=1 THEN LET T*(R)=S*(7) 

490 IF SGN M <R)=-1 THEN LET T$(R)=S$(10) 

500 FOR K=1 TO 6: IF S(K)=0 THEN GO TO 600 
510 PRINT AT Y(K> ,X(K> 5 PAPER 0» INK 4;" 

LET V < K)=Y < K)+D <K) : LET X(K)=X(K)+M(K) 

512 IF Y(K)<5 THEN LET Y(K)=5 

513 IF Y(K)>17 THEN LET Y(K)=17 

515 IF RND >.92 THEN LET D(K)=INT (RND*3-1) 
520 IF X(K)<0 THEN LET X(K)=31 
530 IF X(K)>31 THEN LET X(K)=0 
590 PRINT PAPER 0! INK U<K);AT Y(K),X(K);T$ 
(K) 

600 NEXT K: GO TO 700 
615 REM SWIMMER EASTEN 

625 PRINT INVERSE 1;"EATEN BY A SHARK!!!” 
632 POKE 23606,0: POKE 23607,60: PRINT AT 0, 
0! INVERSE 1;"NO FISH! YOU’RE THE SUPPER!" 

640 GO TO 820 

700 PRINT AT 0,05 INVERSE 1i” 


74 Scuba 


705 PRINT AT 0,0; INVERSE 1;"FISH CAUGHT = « 
iP: IF T=1 THEN GO TO 200 
710 PRINT AT 1,0! INVERSE 1;"AIR LEFT = ■ ; 

AIR 

720 IF AIR< =0 THEN GO TO 800 

750 GO TO 200 

800 PRINT AT 0,0;" 

805 PRINT P;” FISH BROUGHT BACK FOR SUPPER" 
810 PRINT "RAN OUT OF AIR..." 

820 PRINT "ANOTHER GO???" 

330 IF INKEY$< >"" THEN GO TO 830 
340 IF INKEY*=”" THEN GO TO 840 
350 IF INKEY*=”Y” THEN RUN 

860 IF INKEY*=”N" THEN PRINT "THANKYOU FOR 
PLAYING"’ INVERSE 1;" SCUBA ": STOP 
370 GO TO 840 

3000 POKE 23606,0: POKE 23607,60: REM SCUBA I 
NSTRUC TIONS 

3010 PAPER 0: INK 4: BORDER 0: CLS : PRINT TA 
B 11 ; " S C U B A " ’ 

3020 PRINT "You are a scuba diver on a ra-ft a 
bout to swim off and catch -fish-far supper." 
3050 PRINT ’"HOLD DOWN..."’ 

3060 PRINT "S...To swim to the left'” "F...To 
swim to the right” 

3070 PRINT “E...To swim to the surface" 

3080 PRINT "X. .To swim to the bottom" 

3100 PRINT ’"You are armed with a hand spear 
and you simply neeed to swim on top o-f a -fish 
to catch it -for dinner." 

3110 PRINT ’"Beware o-f the sharks. .. they are 
quite harmless but can suddenly open their mo 
uths and then"’"become very nasty!" 

3120 PRINT ’"A spear- won’t help you against 
sharks. . . “There’s a max of 3 fish and 3 
sharks in the sea at any one time.” 

3180 PRINT ’"Fish may suddenly change course 
or speed if they become random1ypanicky." 

3200 PRINT ’"When you enter the water you"'"h 
ave 130 units of air in your tanks. You may 
return to the raft as often as you like f 
or more air.” 




Scuba 75 


3210 PRINT ’ INK 2;"A good diver will get at 
1 east 20 fish! ! ! ” 

3250 PRINT INVERSE 1’” GOOD LUCK...ENTER 
TO START " 

3260 LET Q=RND: IF INKEY$<>CHR$ 13 THEN GO T 
0 3260 

3270 POKE 23606,96: POKE 23607,235: RETURN 
4000 REM CLEAR SCREEN AND PRINT SEA 
4010 BORDER 2: PAPER 0: INK 5 

4020 CLS : FOR J=0 TO 3: PRINT AT J,0; INVERS 
Eli” " 

4030 NEXT J 

4060 INK 2: PRINT AT 4,205" 

4100 INK 4: PRINT AT 13,05“ 

4110 PRINT " -- - - -- - 

4120 PRINT ” -- - - - " 

4130 PRINT " - --" 

4900 RETURN 

4999 REM ** DEFINED CHARACTERS SUBROUTINE 

5000 RESTORE : FOR K=0 TO 12: FOR J=0 TO 7: R 
EM ** K-LOOP PICKS WHICH CHA-RACTER, J-LOOP P 
ICKS THE RELE- VANT BYTE 

5003 READ A: POKE 60256+(K+33)*3+J,A: NEXT J: 
NEXT K 

5009 RETURN 

5010 REM ** >!< SWIMMER RIGHT 1 
5020 DATA 0,0,221,63,220,7,0,0 
5110 REM ** >"< SWIMMER RIGHT 2 
5120 DATA 0,0,29,255,4,4,4,0 
5210 REM #* >#< SWIMMER LEFT 1 
5220 DATA 0,0,137,252,59,224,0,0 
5310 REM ** >$< SWIMMER LEFT 2 
5320 DATA 0,0,134,255,32,32,32,0 
5410 REM ** >%< SMALL FISH RIGHT 
5420 DATA 0,0,76,126,124,64,0,0 
5510 REM ** >E<< SMALL FISH LEFT 
5520 DATA 0,0,50,126,62,2,0,0 
5610 REM ** >’< SHARK RIGHT 

5620 DATA 0,140,190,255,190,128,0,0 

5710 REM #* >(< SHARK RIGHT OPEN MOUTH 

5720 DATA 0,140,191,254,191,128,0,0 

5310 REM ** >)< SHARK LEFT 

5320 DATA 0,49,125,255,125,1,0,0 

5910 REM ** >*< SHARK LEFT OPEN MOUTH 




76 Scuba 


5920 DATA 0,49,253,127,253,1,0,0 
6010 REM ** >+< SWIMMER LEFT HAND UP 
6020 DATA 83,83,124,60,60,40,40,40 
6110 REM ** >,< SWIMMER RIGHT HAND UP 
6120 DATA 26,26,62,60,60,20,20,20 
6130 REM #* >-< WEEDS 

6140 DATA 60,124,60,60,255,255,60,60 

8999 REM ** COPY CHARACTER SET FROM ROM TO R 
AM 

9000 BORDER 0: PAPER 0: CLS : INK 4: IF PEEK 
60256=255 THEN GO TO 9060 

9010 PRINT "WHEN THIS NUMBER-REACHES ZERO 
THE GAME WILL BEGINSOON AFTER" 

9020 FOR X=256 TO 1023: POKE 60000+X,PEEK (15 
104+X) 

9030 BORDER INT ((X-256)/100): PRINT AT 0,18; 
1023-X; " BEEP .01, (X-256) /100 
9040 NEXT X 

9060 BORDER 0: BEEP .5,12: RETURN 



77 

Endings 


Here’s a textual game which is designed to make you delve the depths of 
your geographical knowledge. (And I do mean depths. Did you know 
that Ruteng was a town in Indonesia? Oh well...) Players must think of 
a geographical name which starts with the last letter of the name offered 
up by the player who went before. So it’s you against the computer, who 
from time to time will try to cheat by offering you fictitious names. 
Challenge if you dare! Of course if you’re pushed you can try to cheat 
too, but the computer may well challenge your entry. 

1 POKE 23653,255 
5 REM ENDINGS 
10 LET Q$=" " 

20 LET L5=0 

40 LET M1=0: LET M2=0 

50 DIM G*(130,ll): DIM C(130): DIM X<130) 

60 BORDER 4: PAPER 4: INK 0: CLS 

69 PRINT INVERSE 1;“CAPS LOCK"; INVERSE 0; 
" MUST BE ON." 

70 PRINT "THERE IS A GAME OF GEOGRAPHY 
ENDINGS’ WHERE EACH PLAYER IN TURN HAS TO NA 
ME A COUNTRY,TOWN," 

30 PRINT "MOUNTAIN,RIVER OR OTHER " 

90 PRINT "GEOGRAPHICAL PLACE-NAME WHICH S 
TARTS WITH THE "; INVERSE 1;"LAST LETTER" 

100 PRINT "OF THE PREVIOUS PLACE-NAME." 

110 PRINT : PRINT "I SHALL TAKE YOU ON...I 
MAY CHALLENGE YOU IF I DONT THINK YOU AR 
E GIVING ME A REAL PLACE NAME." 

120 PRINT " IF YOU THINK I AM MAKING S 

OMETHING UP WHEN IT IS YOUR GO,PRESS <ENTER? 
IF YOU CHALLENGE MY NAME OR IF YOU WISH 

TO CHALLENGE ME." 

130 PRINT " I SHALL LEARN AS WE GO.NO PLACE 
NAME MAY BE USED MORE THAN ONCE” 

135 PAUSE 400 
165 LET N=1 

170 READ G*(N),C<N): IF G$(N, TO 3)="ZZZ" TH 
EN GO TO 1000 
180 LET N=N+l: GO TO 170 



78 Endings 


199 REM DATA HAS NAME OF PLACE FOLLOWED BY L 
ENGTH OF WORD 

200 DATA "AACHEN",6 

201 DATA "ABBEVILLE",9 

202 DATA "ACAPULCO",3 

203 DATA "ASIA",4 

204 DATA "AUSTRALIA",9 

205 DATA "AMERICA",7 

206 DATA "ANTARCTICA",10 

207 DATA “AMADI",5 

208 DATA "ARDLUI ", 6 

209 DATA "AVON”,4 

210 DATA "AYR",3 

211 DATA "ATLANTIC",3 

212 DATA "ARLES",5 

213 DATA "ARNO",4 

214 DATA "BOLIVIA",7 

215 DATA "BALI",4 

216 DATA "BOTSWANA",3 

217 DATA "BELIZE",6 
213 DATA "BELGIUM",7 

219 DATA "BULGARIA",8 

220 DATA "BURY",4 

221 DATA "BAYEUX ", 6 

222 DATA "BRAZIL",6 

223 DATA "BIARRITZ",8 

224 DATA "BIU",3 

225 DATA "CAIRO" ,5 

226 DATA "CASPIAN",7 

227 DATA "CHAD",4 
223 DATA "CHILE",5 

229 DATA "LAS VEGAS",9 

230 DATA "CAMBRIDGE",9 

231 DATA "SWANSEA",? 

232 DATA "VICTORIA",8 

233 DATA "WEMBLEY",7 

234 DATA "WUHAN",5 

235 DATA "WHITCHURCH",9 

236 DATA “TOLEDO ", 6 

23? DATA "VERSAILLES",10 
233 DATA "LONDON”,6 

239 DATA "YORK",4 

240 DATA "ZAIRE",5 

241 DATA "YOKOHAMA",8 



Endings 79 


" 

242 DATA "OSLO",4 

243 DATA "NYANGA”,6 

244 DATA "QUITO",5 

245 DATA "PORTSMOUTH",10 

246 DATA "SCARBOROUGH ", 11 

247 DATA "SWITZERLAND",11 
243 DATA "SKOPJE",5 

249 DATA "NALUT",5 

250 DATA "QATAR",5 

251 DATA "RUTENG",6 

252 DATA "RAPID CITY", 1.0 

253 DATA “SPAIN'* ,5 

254 DATA "PEKING",6 

255 DATA "TOKYO",5 

256 DATA ”RESOLUTION", 10 

257 DATA “OLDHAM",6 

258 DATA "IONA",4 

259 DATA "ICELAND",7 

260 DATA "JAMESTOWN",9 

261 DATA "JOINVILLE",9 

262 DATA "ISCHIA",6 

263 DATA "JOMBANG",7 

264 DATA "KYOTO”,5 

265 DATA "NAGASAKI",8 

266 DATA "LUNE",4 

267 DATA "MOBILE",6 

268 DATA "MONROVIA",8 

269 DATA "LANGON",6 

270 DATA "KHARTOUM",8 
999 DATA "ZZZ",3 

1000 BORDER 5: PAPER 5: CLS : PRINT "PRESS AN 
Y KEY TO START." 

1010 PAUSE 0 

1020 LET G$(N)=" ”: LET C(N)=0 

1030 PRINT "++++++++++++ENDINGS++++++++++++" 
1040 PRINT : PRINT : PRINT " DO YOU WANT TO G 
O FIRST?(Y/N)“ 

1050 LET A$=INKEYS: IF A$="“ THEN GO TO 1050 
1060 LET P$="" 

1070 IF A$="N" THEN GO TO 2000 
1030 IF A*='*Y" THEN GO TO 3000 
1090 GO TO 1050 
2000 REM COMPUTER GO 
2010 LET B5=0: LET B$="" 



80 Endings 


202.0 IF P*<>“" THEN LET B$=P$(LEN P$) 

2030 IF 6$="" THEN 60 TO 2100 
2032 IF RND >. 1 THEN GO TO 2200 
2035 LET Q=INT (RND*(N-1))+1 
2038 LET W=0 

2040 IF L$<B$ THEN LET 6>=INT (Q*RND) 

2042 IF L*<B$ THEN LET Q=INT (Q/RND) 

2044 LET L*=G$(G!, 1 ) : IF L$=B$ AND XlfilOl THE 

N LET P*=G^(Q,C(Q)): GO TO 2500 

2050 LET W = W+ 1: IF W>100 THEN GO TO 2200 

2060 GO TO 2.040 

2100 REM FIRST GO 

2110 IF RND>.85 THEN GO TO 2200 
2115 LET Q=INT (RND*(N-1))+1 
2120 IF X (Q) = 1 THEN GO TO 2115 
2125 LET P*=G$(0, TO C(Q)) 

213.0 GO TO 2500 

2200 REM COMPUTER MAKES ONE UP!! 

22.05 LET B$=Q$(1) 

2210 IF B$="“ THEN LET B*=CHR$ (INT (RND*26) 
+ 65) 

2215 LET Q=INT <RND*N)+1 
2220 LET L$=G*(Q,1) 

2225 IF L$=B* THEN LET P$=G«(Q,INT (RND*3+1) 

): GO TO 2240 
2235 GO TO 2215 

2240 LET Q=INT (RND*N)+1: LET R=3 
2245 LET P*=P$+G$(Q,R TO R+<RND*3)+1) 

2250 LET <3=INT <RND*N)+1 

2255 LET P$=P$+G$(Q,11-(INT (RND*3)+1)) 

2256 IF P*(LEN P$)=" " THEN LET P$=P$( TO LE 

N p*-l>: GO TO 2256 

2257 LET P$=Q^(LEN Q$)+P$ 

2258 LET Q=LEN P% 

2260 LET B*<1)=Q$<LEN Q$): LET L5=l: GO TO 25 
.00 

2500 REM COMPUTER PRINTOUT NAME 
251.0 PRINT : PRINT P$ 

2520 LET A*=INKEY*: IF A*='"* THEN GO TO 2520 

2530 IF CODE A$=13 THEN GO TO 2800 

2540 IF A*="*■* THEN GO TO 2700 

255.0 GO TO 2520 

27.00 REM COMPUTER CHALLENGED 

2705 PRINT FLASH 1; BRIGHT 1;" YOU DARE TO C 




Endings 81 


HALLENGE?" 

2710 FOR J=0 TO 400: NEXT J 
2720 IF L5=I THEN GO TO 2780 

2730 PRINT "YOU ARE WRONG.MY NAME IS:": PRINT 
G$(Q) 

2740 PRINT : PRINT "IF YOU DONT BELIEVE ME,LO 
OK IT UP!" 

2750 LET M1=M1+1 

2760 PRINT "THE SCORE IS “5 Ml;" TO ME AND 
M2!" TO YOU." 

2770 LET X < Q)=1: LET P%= "": PRINT "YOU START 
NEXT." : GO TO 3000 

2780 PRINT "I OWN UP...YOU ARE RIGHT.I MADE I 
T UP ! ! " 

2790 LET M2=M2+1: LET P$=””: PRINT "THE SCORE 
IS NOW ";M15" TO ME AND ";M2 5 " TO YOU.": P 

RINT "I’LL START AGAIN.": GO TO 2000 

2800 REM COMPUTERS GO COMPLETE 

2810 LET X(Q)=l: GO TO 3000 

3000 INPUT Q$: IF Q$="" THEN GO TO 3000 

3020 IF P$="“ THEN GO TO 3100 

3030 LET E$=P$(LEN P$) 

3040 IF B$=Q9s(l) THEN GO TO 3100 

3050 PRINT INVERSE 15 BRIGHT 15"ILLEGAL ENTR 

Y.WRONG INITIALLETTER. " 

3060 GO TO 3000 

3100 REM CHECKED AND O.K. 

3110 FOR J=1 TO N 

3120 IF G$(J)=Q$ AND X(J)=1 THEN GO TO 3150 
3130 IF G*MJ)=Q* THEN LET X(J)=1: GO TO 3300 
3134 NEXT J: GO TO 3200 

3150 PRINT "NOT ACCEPTABLE... IT’S BEEN USED B 
EFORE.": GO TO 3000 

3200 REM DOES THE COMPUTER CHALLENGE 
3210 IF RND>.5 THEN GO TO 3230 
3220 GO TO 3300 

3230 BEEP .5,0: PRINT INK 15"CHALLENGE!" 

3240 PRINT INK 3;"I DON’T BELIEVE YOU." 

3250 PRINT INK 3;"NOW YOU WJLL HAVE TO BE HO 
NEST BECAUSE IT IS NOT IN MY DATA BANK. ’’ 
3260 PRINT “IS IT A REAL PLACE(Y/N)?” 

3270 LET A*=INKEY$: IF A*="" THEN GO TO 3270 
3280 IF AS="Y" THEN GO TO 3500 
3290 IF A$= N’’ THEN GO TO 3600 







82 Endings 


3295 GO TO 3270 

330.0 LET P$ = Q*: LET G$<N)=P* 

3310 LET C(N)=1: LET X(N)=1: LET N=N+1 
3320 GO TO 2000 

3500 PRINT "OK..I BOW TO YOUR SUPERIOR K 

NOWLEDGEM": LET M2=M2+1 

3510 PRINT " THE SCORE IS NOW ,, ;M2;" TO ME A 
ND ";Ml;" TO YOU." 

3520 LET P*=”" 

3530 PRINT "I’LL START NOW.GO TO 200 

0 

3600 PRINT "YOU ARE VERY HONEST.THANK YOU." 
3610 LET Ml=Ml + l: PRINT "THE SCORE IS NOW “* M 
1J" TO ME AND ";M2;" TO YOU." 

3620 LET P*=“": PRINT "YOU START NOW.": G 

0 TO 3000 




83 

Snap 


This is a program which puts your micro’s graphics capabilities to good 
use. It’s an educational exercise for the very young, designed to test their 
powers of observation. The computer generates a series of picture cards 
at the bottom of the screen—a bus, a train, a ship and so on—and then 
randomly reproduces selected cards at the top of the screen, and it’s up 
to the players to match up the top picture with the letter representing the 
appropriate picture at the bottom of the screen. 

10 REM * HIGH RES.PICTURE SNAP @ 

1983 MICHAEL BEWS 
15 POKE 23609,111 
20 BORDER 6: PAPER 5: INK 1 

25 LET TB=10000: LET <3*="ZXCVBNM”: LET P=0: 

LET R=0: LET T=0 
30 DIM A < 7,72) 

40 GO TO 600 

49 REM * HI RES SCREEN DISPLAY 

50 CLS : PRINT PAPER 7; INK 15 INVERSE 15” 
HI-RES PICTURE SNAP @1983 M.BEWS"; INK 2;“TIM 
e: "; tab 13;*' correct out of: ”;at l,30;P; 

55 PRINT INVERSE 1;AT 18,35“Z”;AT 18,7;“X" 
5 AT 18,115“C"5 AT 18,155 ”V"5 AT 18,19; "B“5 AT 18 
,23;“N";AT 18,27;“M" 

60 FOR K=1 TO 7: FOR L=0 TO 7: FOR M=1 TO 9 
70 POKE USR CHR$ (143+M)+L,A<K,L*9+M) 

75 NEXT M: NEXT L 
80 LET Y=K*4-2 

100 PRINT PAPER 7;AT 14,Y; “ABC ”5 AT 15,Y;’D^ 
F" ;AT 16,Y; "6HI ”; 

120 NEXT K 

199 REM ** GAME DISPLAY ROUTINE 

210 PRINT AT 4,215” “5 AT 6,14;” * 5 AT 

7,145“ “5 AT 8,14 5" ”5 

220 PRINT AT 20,05 PAPER 7; INK 2; INVERSE 1 
5"PRESS THE CORRECT LETTER AS SOONAS YOU RECO 
GNISE THE NEW PICTURE" 

230 LET N=1+INT <RND#7) 

240 FOR L=0 TO 7: FOR M=1 TO 9: POKE USR CHR 
$ (143+M)+L,A(N,L#9+M): NEXT M: NEXT L 




84 Snap 


250 LET X=200+INT <RND*500): FOR C=1 TO X: N 

EXT X 

260 PRINT PAPER 7;AT 6,14; "ABC ";AT 7,14 i’D£ 
F" ; AT 3,14; "GHI"; 

265 LET TA=0 

270 LET A=PEEK 23556: IF A=255 THEN LET T=T 
+1: PRINT AT 1,6; PAPER 7; INK 2;T;: GO TO 27 
5 

272 GO TO 280 

275 LET TA=TA+1: - IF TA=200 THEN GO TO 290 
277 GO TO 270 

230 IF A=CODE Q*(N) THEN LET R=R+1: PRINT A 
T 1,13; PAPER 2; INK 7;R: PRINT AT 4,21; INK 
7; PAPER 4;“CORRECT”;: GO TO 300 
290 PRINT PAPER 2; INK 7;AT 4,21;"WRONG! "; 
300 LET P=P+1: PRINT AT 1,30; PAPER 2; INK 7 

;p; 

310 IF P=10 THEN GO TO 400 

320 FOR X=1 TO 200: NEXT X: GO TO 210 

399 REM *END OF GAME ROUTINE 

400 REM *END OF GAME ROUTINE 
410 IF TB>T THEN LET TB=T 

420 PRINT AT 10,0; INK 7; PAPER 2;"YOU HAVE 
”;R;" CORRECT OUT OF 10 IN";AT 11,0;"TIME *;T 
;". BEST TIME SO FAR “;TB; 

430 INPUT FLASH 1;"PRESS<ENTER>FOR NEXT GAM 

E"; x$ 

440 LET R=0: LET T=0: LET P=0 
450 PRINT AT 10,0;" 

460 PRINT INK 7; PAPER 2;AT 1,6;" 

;AT l,30;" -; 

470 GO TO 210 

598 STOP 

599 REM ^INITIALISATION 

600 CLS : PRINT PAPER 7; INK 1; INVERSE 1;" 
HI-RES PICTURE SNAP @1983 M.BEWS" 

610 PRINT AT 2,9; PAPER 7; INK 4; FLASH 1;"I 
NITIALISING"; FLASH 0! INK 1; INVERSE 15 AT 4, 
05“THIS PROGRAM ALLOCATES SEVERAL HIGH RES0 
LUTION PICTURES TO THE ’Z’-’M’ KEYS. 

"SAT 9,0;"AFTER A SHORT DELAY, ONE P 
ICTURE IS DISPLAYED AT THE CENTRE OF THE SCR 



Snap 85 


EEN. YOU MUST QUICKLY PRESS THE CORRECT KE 
Y TO SCORE. " 

620 FOR X=1 TO 7: FOR Y=1 TO 72: READ A(X,Y) 

: NEXT Y: NEXT X 
650 GO TO 50 

998 STOP 

999 REM *#ship 

1000 DATA 0,0,0,0,0,8,15,255,224,0,0,0,3,128, 
8,0,0,0,0,0,0,3,123,3,0,0,0,0,0,0,15,255,8,0, 
0,0,0,0,0,15,255,8,0,0,0,0,0,0,63,255,252,0,0 
,0,0,0,8,63,255,248,0,0,0,0,0,8,31,255,240,0, 
0,0 

1009 REM ^helicopter 

1010 DATA 0,0,0,0,7,128,0,255,252,0,0,0,0,12, 
192,0,0,0,0,0,0,96,24,96,0,0,0,0,0,0,127,240, 
112,0,0,0,0,0,0,111,255,224,0,0,0,0,127, 240,3 


6 , 4 , 0 , 0,0 

1019 REM **bus 

1020 DATA 0,0,0,0,0,0,60,1,224,0,0,0,63,255,2 


4,0,0,0,0,0,0,63,255,214,0,0,0,0,0,0,127,255, 


1029 REM Hrailway engine 

1030 DATA 0,0,0,12,3,123,7,131,192,0,0,0,12,1 
95,123,3,1,123,0,0,0,31,255,128,0,0,0,0,0,0,3 
1,255,240,0,0,0,0,0,0,31,255,240,0,0,0,0,3,24 
0,31,255,240,0,0,0,0,2,128,15,255,240,0,0,0,1 
2,2,128,31,255,240,0,0,0 

1039 REM Hear 

1040 DATA 0,0,0,0,127,0,12,0,24,0,0,0,0,132,1 
28,0,0,0,0,0,0,1,4,64,0,0,0,0,0,0,2,4,32,0,0, 


, 0 

1049 REM *#tank 

1050 DATA 0,0,0,64,3,0,51,51,48,0,0,0,64,255, 
0,63,255,240,0,0,0,65,255,128,12,204,192,0,0, 


,64,0,0,127,255,252,0,0,0 
1059 REM **clocl< 





86 Snap 


1060 DATA 0,0,0,9,64,144,8,66,16,0,0,0,8,32,1 
6,8,24,16,0,0,0,8,16,16,8,0,16,15,255,240,10, 
15,30,15,255,240,8,0,16,8,0,16,0,0,0,8,24,16, 
8,0,16,0,0,0,3,66,16,9,0,144,0,0,0,8,0,16,8,0 
,16,0,0,0 





Paypackets 


87 


Anyone who runs a shop or small business will find this program 
something close to invaluable. It’s Friday, you’ve worked out how much 
everyone is getting paid and the time has come to make up the wage 
packets. How many, of what note and what change are you going to 
need? Well, key this in and all your problems are solved. The program is 
relatively short, completely reliable and of course you don’t have to own 
a business to use it. It will work with any sum — from thousands of 
pounds right down to the expenses for the local church fete, or individual 
small prizes for the children’s party. 


1 REM PAYPACKETS 

BY H. WALWYN 

FOR THE COMMODORE 64 

CONVERTED F 

OR THE 16/43K SPECTRUM 

BY ANDY GREEN 

1.0 REM CS(X, 12)=NAME OF CURRENCY 

12 REM CV<X)=CURRENCY VALUE INPOUNDS 
14 REM CA(X)=AMOUNT OF UNITS REQUIRED OF T 
HIS CURRENCY 

16 REM CB <X)=TOTAL AMOUNT OF UNITS REQUIRE 
D OF THIS CURRENCY 

18 DIM C*<11,12): DIM V(11) : DIM A <11) : DIM 
B < 1 1 ) 

20 FOR J = 1 TO 11: READ C$<J),V(J): NEXT J 
25 DATA "ONE PENCE ", 0.01, "TWO PENCE",0.02 
30 DATA "FIVE PENCE", 0.05, "TEN PENCE", 0.1, " 
TWENTY PENCE",0.2 

40 BATA "FIFTY PENCE",0.5,"ONE POUND",1,"FI 
VE FOUND",5 

50 DATA "TEN POUND", 10, "TWENTY POUND",20, "F 
IFTY POUND",50 

60 LET SR=0: LET XX=0: LET D3>=" “ 

100 PAPER 0: CLS : BORDER 1: INK 6 
150 GO SUB 500 
155 INK 6 

160 INVERSE l: PRINT AT 2,0;" ENTER FOR 

NEW PAYMENT 

165 PRINT H SPACE TO GIVE THE TOTAL AMOUNT “ 



88 Paypackets 


170 PRINT " DELETE TO CANCEL ALL DATA 
1S0 INVERSE 0 

199 REM **GET AN INSTRUCTION KEY 

205 LET XX=0: LET SR=1 

210 LET A$=INKEY$: IF A*= " " THEN GO TO 210 

220 IF A$=CHR* 13 THEN GO TO 300 

230 IF A*=CHR$ 12 THEN RUN 

240 IF ASJ=" " THEN GO TO 400 

250 GO TO 210 

300 LET F'ACKET=0: INK 3: PRINT AT 0,0; FLASH 
1;"CASH AMOUNT IN PACKET?";: GO SUB 9000: PR 
INT ’ ":A$ 

310 PRINT AT 0,0;"CASH AMOUNT IN PACKET ";A* 
320 LET A=VAL A$: LET A1=A 

330 i_ET PACKET=l: PRINT FLASH 1; "NUMBER OF 
PACKETS? GO SUB 9000: PRINT " ” ; A* 

340 PRINT AT 1,0;"NUMBER OF PACKETS ";A$;” 

350 LET B=VAL A$: LET B1=B 

360 GO SUB 800 

370 CLS : GO TO 150 

399 REM ** TOTAL FIGURE 

410 LET XX=1 

420 CLS : GO TO 150 

499 REM ** PRINT OUT TABLE 

500 LET AT=0 

510 PRINT AT 5,0; INK 2;"- 


525 PRINT INK 5; BRIGHT 1;"CURRENCY”;TAB 14 
;"NO OF UNITS";TAB 26;"AMOUNT" 

530 PRINT 

535 FOR J=1 TO 12: INK 3: POKE 23692,255 

536 IF J< >12 THEN GO TO 540 

537 PRINT TAB 21 ; ”-" 

533 PRINT TAB 14; "TOTAL: ” ; 

539 LET A$=STR$ (AT): GO TO 580 
545 PRINT C* (J); 

550 LET C=LEN (STR* (INT (A(J)))) 

551 IF XX=1 THEN LET C=LEN (STR$ (INT <B(J) 

) ) 

559 IF XX=1 THEN INK 4: PRINT TAB 22-C;B(J) 

:: GO TO 571 

560 INK 4: PRINT TAB 18-C;A(J); 







Paypackets 89 


570 LET A$=STR$ (A<J)*V(J)) 

571 IF X X = 1 TflEN LET A*=STR* (B<J)*V<J)) 

574 IF XX=1 THEN LET AT=AT+B(J)*V(J): GO TO 

580 

575 LET AT=AT+A<J)*V<J) 

580 LET D*='"': LET N=0: FOR K=1 TO LEN A$ 

590 LET B35=A$(K) 

600 IF B*=" “ THEN GO TO 650 

510 LET D$=D$+B^ 

613 LET FL=0: FOR X=1 TO LEN D$: IF CODE D$ > 
4? AND CODE D*<58 THEN LET FL=1 

614 NEXT X: IF FL=0 THEN GO TO 620 

615 IF 8$="." AND VAL D$< 1 THEN LET D$=\0" + 
D* 

620 IF B$=". ,, THEN LET N=1 
650 NEXT K 

660 IF N=0 THEN LET D$=D$+".00": GO TO 700 
670 LET A=LEN D$: IF D$(A-1)=“." THEN LET D 
$=!)$+"0” 

690 REM ** STRING COMPLETE 

700 INK 5 

710 LET A=LEN D* 

720 PRINT TAB 30-A;D$ 

730 NEXT J 

740 IF SR=0 THEN GO TO 750 

741 IF XX=i THEN INK 4: PRINT INVERSE 1;"T 
HIS IS THE RUNNING TOTALAT 0,0;: GO TO 750 

742 IF XX=0 THEN INK 6: PRINT INVERSE 15 
; B l; “ x £"; A l; 

750 RETURN 

800 REM ** CALCULATE A(X) 

810 LET X=0: LET A=A*100: FOR J=ll TO 1 STEP 
-1 

820 LET A(JJ=0: IF X=1 THEN GO TO 350 
330 IF (A-V(J)*100)<0 THEN GO TO 350 

335 LET A=INT (A-INT (V<J)*100.0000001)): IF 
A=0 THEN LET X=1 

336 REM ** PREVIOUS LINE PREVENTS DECI 

MAL PLACE OVERFLOW ERROR 

840 LET A <J)=A <J)+1: IF X=0 THEN GO TO 830 
850 NEXT J 

860 FOR J=1 TO 10: LET A(J)=A(J)*B: NEXT J 
370 FOR J=1 TO 10: LET B(J)=B(J)+A(J): NEXT 





90 Paypackets 


830 RETURN 

8999 REM ** NQN-CRASHABLE NUMERIC INPUT 

9000 INPUT LINE A*: LET FL=0: LET FL2=0: LET 
DP=0 

9005 IF A$=" " THEN 60 TO 9000 

9010 FOR X=1 TO LEN A$: IF CODE A$(X>=46 THEN 
LET FL2=FL2+l: LET DP=X 
9020 IF (CODE A$<X><43 OR CODE A*(X)>57) AND 
CODE A*«XS<>46 THEN LET FL=1 

9030 NEXT X: IF LEN A$-DP<>2 OR FL OR FL2>1 O 
R LEN A*>6 THEN BEEP .5,-3: PRINT #1; FLASH 
1j”PLEASE REINPUT": PAUSE 50: BEEP .02,12: 60 

TO 9000 

9040 IF PACKET THEN IF DP OR LEN A$>2 THEN 
LET FL=1: 60 TO 9030 
9060 RETURN 



91 


Newmarket 


This is another game with an equestrian flavour, except this time around 
you’ll require the skills of a budding Lester Piggot. There are eight 
horses in the race, and two things will happen once you have decided 
which one you want to ride. Firstly, all the other horses will gallop off at 
the start, leaving you floundering at half speed. You soon discover that 
your mount is one of those creatures that only pulls its weight when the 
finishing line is in sight and then it will go twice as fast as anything else on 
four legs. 

The second problem is that the other horses have a (cleverly computed) 
desire to crowd you out of the action. They will tend to close up in front 
of you and even steer straight at you from the side! There’s no steward to 
protect you in this race, so aim for a gap in the field and hope you will be 
fast enough to avoid trouble. Any horses colliding with each other are 
flung randomly sideways and backwards, thus losing valuable speed. 
OK, you’re under starter’s orders... 

1 REM NEWMARKET . WALWYN 

2 REM HORSERACE GAME 

5 DIM a(7): DIM b(7): DIM x<7): DIM y<7): 

10 LET c=0 

15 BORDER 0 

20 PAPER 7 

25 INK 0 

30 LET slo=3: REM ^-factor to slow movement 

40 GO SUB 1000 

50 GO SUB 3000 

85 INK 0 

90 CLS 

92 FOR X=0 TO 6: INK x 

93 PRINT AT 2+X*3,0;STR* (X+l);" DEF" 

94 NEXT X 

95 INK 0: FOR X=0 TO 21: PRINT AT X,30;” ": 

NEXT X 

96 INK 0: PRINT AT 0,0;" Controls 7=UP 6 
DOWN 

97 INPUT "Select your horse 1-7 ";h* 

98 IF h$<"1" OR h«>"7" THEN GO TO 97 




92 Newmarket 


99 LET n = VAL (h*): LET acc=<20-ABS <4-n))/3 
4 

100 LET k*=INKEY*: LET m=INT <RND*7+1) 

102 IF m=n THEN GO TO 100 

105 IF k$="7" OR k*="6" THEN LET m = r>: GO TO 
150 

110 LET k9="7": IF RND >. 5 THEN LET k*="6" 
120 IF x (m) >x (n) -2 THEN LET k*=' , 7": IF y<n) 
>y<m) THEN LET k*="6" 

150 IF k$=“7" THEN LET y (m)=y(m)-1 : IF y(m) 
<1 THEN LET y(m)=l 

160 IF k$="6" THEN LET y(m)=y(m)+1: IF y(m) 
>20 THEN LET y(m)=20 
165 LET x(m)=x(m)-1/slo 
180 FOR i = l TO 7 
185 LET j =INT (RND*4+1) 

190 IF iOn THEN GO TO 240 

200 IF c=0 THEN LET j=j*acc: IF x(n)>9 THEN 
LET c=l 

205 IF c=l THEN BORDER 2: LET c=2 
210 IF c=2 THEN LET j=j*2 

240 LET x(i)=x(i)+j/slo: IF x(i)>28 THEN LE 
T x ( i)=28 
250 NEXT i 
400 LET crash=0 
410 FOR i=1 TO 7 
420 FOR j=i TO 7 
430 IF i=j THEN GO TO 550 
440 IF y(i)< >y(j ) THEN GO TO 550 
450 IF ABS (x(i )-x (j ) ) >3 THEN GO TO 550 
460 LET d=l: IF b(i)>b(j) THEN LET d=-l 
470 LET y(i)=y<i)-d 
475 LET y <j ) =y(j )+d 
480 IF ytiXl THEN LET y(i)=l 
490 IF y(i)>20 THEN LET y(i)=20 
500 IF y(j)<1 THEN LET y < j)=1 
510 IF y(j) >20 THEN LET y(j)=20 
530 LET x(j)=x<j)-INT <RND*5+1 )/slo: IF x(j 
)<2 THEN LET x <j )=2 
540 LET crash=l 
550 NEXT j 
560 NEXT i 

570 IF crash=l THEN GO TO 400 
600 FOR i=1 TO 7 





Newmarket 93 


610 PRINT AT INT b(i),INT a(i)i" 

615 INK i-1 

618 LET h*= "DEF": IF x(i)-INT (x<i))>.5 THEN 
LET h *=“ABC" 

620 PRINT AT INT y<i),INT x<i);h$ 

625 IF x <i) > = 28 THEN GO TO 5000 
630 LET a(i)=x(i) 

635 LET b <i)=y <i) 

640 NEXT i 
700 GO TO 100 

1000 REM **** Instructions **** 

1010 CLS : PRINT AT 0,105"NEWMARKET": PRINT 
1020 PRINT “In this horse-race game, you" 

1030 PRINT "ride any horse -from 1 to 7." 

1040 PRINT "You must steer a path avoiding ■ 
1050 PRINT "the other horses since any horse" 
1060 PRINT "in a collision with another will" 
1070 PRINT "be blocked and -forced sideways" 
1080 PRINT "and backwards." 

1090 PRINT : PRINT “’Easy’, you might say..." 
1110 PRINT "BUT your horse is a very s-l-o-w" 
1120 PRINT "starter and will only run at " 
1130 PRINT "speed after the screen border " 
1135 PRINT "turns PRINT PAPER 2;"RED";: 

PRINT This occurs when you" 

1140 PRINT "have ridden a third of the way" 
1150 PRINT "down the track, so you will " 

1160 PRINT "always have other horses in " 

1170 PRINT "front of you." 

1171 PRINT AT 20,0;" Press any key to conti 

1172 LET z*=" " : LET z*=INKEY$: IF z*="" THEN 
GO TO 1172 

1175 CLS : PRINT AT 0,0;"To make it harder st 
ill, all" 

1177 PRINT "horses within 20 feet of you " 
1180 PRINT "will attempt to block your path" 
1182 PRINT "or crash into you!": PRINT 
1185 PRINT "Push number 6 to move down the" 
1187 PRINT "screen and number 7 to move up" 
1190 PRINT "the screen. BEWARE: any course" 
1192 PRINT "alteration will also reduce your" 
1195 PRINT "speed!" 

1197 PRINT 


94 Newmarket 


12.00 PRINT " Good Luck! 

: PRINT : PRINT " Press any key to start 

1210 LET z*=“ " : LET z$=INKEY$: IF z$=”" THEN 
GO TO 1210 
1220 RETURN 

3000 REM ** set up horse graphic ** 

3005 FOR i=0 TO 7: READ gr 
3010 POKE USR "a"+i,gr 
3020 NEXT i 

3105 FOR i=0 TO 7: READ gr 
3110 POKE USR "b" + i,gr 
3120 NEXT i 

3205 FOR i=0 TO 7: READ gr 
3210 POKE USR "c"+i,gr 
3220 NEXT i 

3305 FOR i=0 TO 7: READ gr 
3310 POKE USR "d"+i,gr 
3320 NEXT i 

3405 FOR i=0 TO 7: READ gr 
3410 POKE USR "e”+i,gr 
3420 NEXT i 

3505 FOR 1=0 TO 7: READ gr 
3510 POKE USR " -f “ + i , g r 
3520 NEXT i 

3900 DATA 0,0,0,12,3,3,5,10 

391.0 DATA 8,12,26,113,255,254,1,1 

3920 DATA 0,128,224,144,192,128,64,32 

3930 DATA 0,0,1,195,63,63,30,80 

3940 DATA 128,196,174,153,252,224,20,34 

3950 DATA 0,0,0,0,0,0,0,0 

4000 REM ** set up screen positions *# 

4010 FOR q=1 TO 7 

4020 LET a(q)=2: LET x(q)=2 

403.0 LET b(q)=q*3-l: LET y(q)=b(q) 

4040 NEXT q 
4050 RETURN 

5000 REM *** winner ##* 

5.005 PAPER i -1 : INK (7*INT <<7-i>*2/7>> 

5010 IF i = r. THEN GO TO 5030 

5015 PRINT AT 0,0;" The Winner....Horse Numbe 
5020 GO TO 5.040 

5030 PRINT AT 0,0!" You won! Well done 






Newmarket 95 


5035 REM *flash* 

5040 FOR q=l TO 50 

5045 PRINT AT y<i),x<i); FLASH 1; "DEF" 

5050 NEXT q 

5100 PRINT AT 21,0;" Press any key to play 
again 

5130 LET z$=" M : LET z$=INKEY$: IF z$=" " THEN 
GO TO 5130 
5150 RUN 

6000 REM ************************ 

6010 REM 

6020 REM To alter the -fortunes of the game tr 

y the following:- 

6030 REM vary slo in line 30 

6040 REM vary the speed of your horse reiativ 
e to the others by changing j in lines 200-21 
0 

6050 REM alter the point at which the speed u 
p takes place..e.g.x>8 in line 210 




96 


Holiday Expenses <4 sk) 


Calculate all your currency needs for a trip through several countries. 
Approximate exchange rates are included for 19 currencies and you may 
enter others as you wish. Four currencies are handled at one time by the 
holiday costs and cross-rates pages and there are twelve holiday costs 
categories ranging from hotel bills to phone calls and gifts for the folk 
back home. Enter your anticipated costs in each of the four currencies, 
press a key and see the total in sterling. 

1 REM ******************************** D E 
FINITIVE ************ 

HOLIDAY EXPENSES 

2 REM ***- 

3 REM *** 

4 REM *** 

5 REM *** 

10 REM ***HOLIDAY EXPENSES @1 

983 MICHAEL BEWS 
15 POKE 23609,111 
20 BORDER 6: PAPER 7: INK 1 
25 LET E*=" 1 5 10 20 50100500” 

30 DIM Ct$(12,5): DIM C(13,4): DIM N*<4,3): 
DIM R (4 ) 

35 LET CF=0: LET TF=0: LET VF=0: LET N=1: L 
ET CY=1: LET FG=0: LET T=0 
40 GO TO 600 ‘ 

49 REM **RATES DISPLAY 

50 INK 0: CLS : PRINT INVERSE l;“ HO 

LIDAY EXPENSES 

60 PRINT M £STG”;TAB 5;N$<1);TAB 12;N$(2);TA 
B 19;N*(3) 5 TAB 26;N$<4) 

70 PRINT AT 1,0; OVER 1;"_ 


30 FOR X=1 TO 7: LET Z$=E*<X*3-2 TO X*3): P 
RINT AT X+1,052^;"="; 

90 FOR Y=1 TO 4 
100 LET Q*=STR* (R(Y)*VAL Z%) 

110 GO SUB 3000 

120 PRINT AT X+l,Y*7-3;Qj 

130 NEXT Y 






Holiday Expenses 97 


140 NEXT X 

150 PLOT 31,167: DRAW INK 1; OVER 1;0,-63 
160 PLOT 37,167: DRAW INK 15 OVER 1;0,-63: 
PLOT 143,167: DRAW INK 1; OVER 150,-63: PLOT 
199,167: DRAW INK 1; OVER 150,-63 
170 PRINT AT 9,05 INVERSE 15" 1 2 3 

4 5 

180 PRINT INK 15 AT 20,0; INVERSE 15 "ENTER 2 
COLUMN NUMBERS (eg 32) TO DISPLAY CROSS-RAT 
ES ("5 (NS < 2) ) 5 "/ "5 < N*(1) ) 5 ” ) " 

135 BEEP .1,10 

189 REM -X-CROSS RATES CALCULATOR 

190 INPUT INK li INVERSE l;"OR ENTER ’M’ FO 
R MENU"5 X$ 

200 IF X*="M" THEN GO TO 850 
205 IF X*=" " THEN GO TO 340 
210 IF LEN X*<>2 THEN GO TO 130 
220 LET F=VAL X$(1)-1: LET S=VAL X*(2)-l 
225 IF S<0 OR S>4 OR F<0 OR F>4 THEN GO TO 
130 

230 IF S=0 THEN LET Q=R(F): LET J$=N$(F): L 
ET K$="STG": GO TO 260 
235 IF F=0 THEN LET Q=1/R(S): LET J$="STG": 
LET K*=N$(S): GO TO 260 
240 LET Q=R(F)/R(S) 

250 LET J$=N$(F): LET K$=N$(S) 

260 LET M=1 

265 IF GK.01 THEN LET Q=Q*10: LET M=M*10: G 
O TO 265 

270 LET Q*i=STR* <3: GO SUB 3000 
230 LET C=Q: PRINT AT 11,05 PAPER 65S*5S*5S$ 
;S$ 5 AT 11 , 05 " ”;J$;TAB 11;K$;AT 11,05 OVER 1; 


290 FOR X=1 TO 7: LET Z=M*VAL E*(3*X-2 TO 3* 
X) 

300 LET Q=C*VAL E$(3*X-2 TO 3*X) 

305 LET Q$=STR* Q 
310 GO SUB 3000 

320 PRINT AT 11+X,1; PAPER 65Q5TAB 9;"= ";Z 
330 NEXT X 

335 PLOT 0,88: DRAW INK 250,-65: DRAW INK 
25128,0: DRAW INK 250,65: DRAW INK 2;-123,0 
: PLOT 64,38: DRAW INK 250,-65 
339 REM **CROSS RATES(ANY AMNT) 




98 Holiday Expenses 


340 PRINT AT 20,0;S$;AT 20,0; INK 2; INVERSE 
15" ENTER ANY AMOUNT OF ";(J$i);" OR "|(K*)i“ 
TO SEE EQUIVALENT. eq ";(J*);"5000 “ 

345 BEEP .1,20 

350 INPUT INVERSE l;"OR ENTER ’M’ <MENU)”;U$ 
352 IF U*=”M" THEN GO TO 850 
355 IF LEN U*<4 THEN GO TO 180 
360 IF U*< TO 3>=K* THEN LET Y=VAL U$(4 TO 
): LET Q$=STR* (Y*C/M): GO SUB 3000: LET X=Q: 
GO TO 390 

370 IF U*( TO 3)=J* THEN LET X=VAL U*(4 TO 
): LET Q$=STR* (X*M/C): GO SUB 3000: LET Y=Q: 
GO TO 390 
380 GO TO 130 

390 PRINT AT 12,16;" ";J*;TAB 25;K*; ” ”!A 

t 13,16;” ";at 13,16;x;tab 24; 

Y; PAPER 6;AT 15, 18; "Press’ ENTER’to";AT 16,18 
; "corit i nue here . " 

395 GO TO 180 

399 REM **COST SPREADSHEET 

400 CLS : PRINT INVERSE 1?" HOLIDAY 

EXPENSES 

405 PRINT TAB 10; "M”; TAB 16; " N " ! T AB 22; ,, 0” ;T 
AE 285"P” 

410 PRINT "CHARGES”;TAB 9;N$<1) 5 TAB 15;N$(2) 
;tab 21;n$(3);tab 27;n*<4) 

415 PRINT OVER 1;AT 1,0;"_ 

417 PRINT OVER 1;AT 2,05"_ 


420 PLOT 59,167: DRAW INK 1; OVER l;0,-110 
430 PLOT 111,167: DRAW INK 1; OVER 150,-110 
: PLOT 159,167: DRAW INK 1; OVER l;0,-110: P 
LOT 207,167: DRAW INK 1} OVER l;0,-110 
440 FOR X=1 TO 12: PRINT AT X+2,0;CHR$ (X+64 

); " >'■ ;C*(X) : next x 

445 FOR X=1 TO 12: FOR Y=1 TO 4: PRINT AT X+ 

2 ,2+6 *y;c<x,Y);: next y: next x 

450 PRINT OVER 15 AT 14,0;"_ 


455 BEEP .1,10 

460 IF TF=1 THEN LET TF=0: GO TO 560 
480 IF CF=0 THEN GO TO 530 
495 LET CF=0 









Holiday Expenses 99 


500 PRINT AT 20,0; INVERSE 15"ENTER CHARGE C 
ODE LETTER TOGETHER WITH NEW NAME ( eg BTOURS 
) 

505 INPUT INVERSE 1;"OR ENTER ’M’ FOR MENU 
";X*: IF X*= ,, M" THEN GO TO 850 
510 IF X$=" " OR LEN X*<2 OR X*(1X"A B OR X* ( 
1)>“L” THEN GO TO 505 

520 LET C$(CODE X$(1)-64 ) =X*(2 TO ): FOR X=1 
TO 12: PRINT AT X+2,0;CHR* (X+64C$(X); 

: NEXT x: GO TO 500 

530 PRINT AT 20,0; INVERSE 1;”TO ENTER A COS 
T ITEM, ENTER ROW/COLUMN WITH AMOUNT eg AM2 
00 

535 INPUT FLASH 1;"OR ENTER ’M’ FOR MENU "; 
X$: IF X*= ,, M" THEN GO TO 350 
537 IF X*=”“ THEN GO TO 530 

540 IF X*(i><“A“ OR X*(1)>"L" OR X*(2X"M" O 
R X$<2 )>"P" OR LEN X$<3 THEN GO TO 530 
545 LET Q*=X$(3 TO ): GO SUB 3000: LET C(COD 
E X$<1)-64,C0DE X*(2)-76)=Q: PRINT AT CODE X* 
(1)-62,2+6*<C0DE XS(2)-76);Q 
550 BEEP .1,20 
555 GO TO 530 

559 REM **CALCULATE TOTAL COSTS 

560 BEEP .05,13: LET T=0: FOR X=1 TO 4: LET 
C ( 13,X)=0: NEXT X: FOR X=1 TO 12: FOR Y=1 TO 
4: LET C <13,Y)=C(13,Y)+C <X,Y) : NEXT Y: NEXT X 

562 FOR X=1 TO 4: BEEP .05,25: IF C(13,X)=0 
THEN GO TO 564 

563 LET Q$=STR* C(13,X>: GO SUB 3000: LET C< 
1 3, X) =Q 

564 NEXT X 

565 BEEP .1,20: PRINT AT 15,8;C(13,1)!TAB 14 
!C(13,2);TAB 20;C(13,3) 5 TAB 26;C(13,4) 

567 BEEP .1,13: PRINT AT 15,0;"TOTALS";AT 16 
,0!” RATE"5 AT 17,0;" £STG" 

570 FOR X=1 TO 4 

572 PRINT AT 16,1+6*X;R(X): LET Q«=STR$ (C(l 
3,X)/R(X)): GO SUB 3000: PRINT AT 17,1+6*X;Q: 
LET T=T + Q 

574 NEXT X 

575 BEEP .1,1 

530 LET Q*=STR* T: GO SUB 3000: PRINT AT 18, 
14;"GRAND TOTAL=£";Q 



100 Holiday Expenses 


590 BEEP 1,1: INPUT INVERSE 1i"PRESS<ENTER> 
TO RETURN TO MENU“j X$ 

595 GO TO 850 

600 CLS : PRINT AT 0,7; PAPER 15 INK 7;"H0LI 
DAY EXPENSES" 

605 LET S$=" 

": LET B$=CHR 


$ 8+CHR* 8+CHR* 3+CHR$ 8 
610 PRINT : PRINT " THIS PROGRAM WILL HELP Y 
OU TO CALCULATE YOUR APPROXIMATE FORE 

IGN CURRENCY NEEDS FOR A TOUR THROUGH ONE, 

OR SEVERAL COUNTRIES." 

620 PRINT : PRINT "INTERNATIONAL EXCHANGE RA 
TES ARE ALWAYS BASED ON THE AMERICAN DOLLAR 
RATE FOR EACH CURRENCY. FOR EXAMPLE,THE STE 
RLING/PESETAS RATE IS PRODUCED FROM THE STG/$ 
AND */PTS RATES." 

630 PRINT : PRINT "THE DIFFERENCE BETWEEN ’B 
UYING’ AND ’SELLING' PRICE FOR CURRENCY NOTE 
S OR TRAVELLERS’ CHEQUES REPRESENTS THE BAN 
K’S ’PROFIT’ ON THE TRANSACTION. A SMALL 

COMMISSION CHARGE IS ALSO OFTEN AD 

DED. " 

635 BEEP .1,10 

640 INPUT FLASH 1; "PRESS <ENTER>"; FLASH 0; 
X* 

650 CLS : PRINT AT 0,7; PAPER 1; INK 7;"H0LI 
DAY EXPENSES" 

660 PRINT : PRINT " BECAUSE OF THE USUALLY 
WIDE ’SPREAD’ BETWEEN BUY AND SELL QUOTED 

FOR TOURIST RATES, IT IS ALMOST ALWAYS SAF 
ER TO AVOID MULTIPLE EXCHANGE TRANSACTIONS." 
665 PRINT : PRINT "TAKE ABOUT £5/10 OF SMALL 
DENOMINATION";B$;B*iB$iB*;CHR* 8;CHR* 8; OVE 

R 1 ; "_"; OVER 0;" FOREIGN NO 

TES FOR EACH COUNTRY YOU WILL VISIT, FOR US 
E ON ARRIVAL. IF YOU ARE DEPARTING FROM A BI 
G AIRPORT THESE ARE USUALLY AVAILABLE FROM 
A BANK IN THE ARRIVALS";B$;B$! OVER 1; 

"_“; OVER 0;" HALL" 

670 REM PRINT : PRINT " ALSO, SEVERAL CURR 
ENCIES ARE CHEAPER TO BUY BEFORE YOU LEAVE 
HOME AND OTHERS ARE CHEAPER TO BUY WHEN YOU 
ARRIVE AT YOUR DESTINATION." 





Holiday Expenses 101 


680 PRINT : PRINT "THE FOLLOWING TOURIST RAT 
ES ARE INCLUDED ONLY AS A VERY ROUGH GUIDE. 

ACTUAL MARKET RATES WILL VARY, OFTEN QUITE 
WILDLY, FROM DAY TO DAY." 

685 BEEP .1,10 

690 INPUT FLASH IMPRESS < ENTER > ” ; FLASH 0; 
X* 

695 REM * INITIALISE CURRENCIES AND HOLIDAY 
COST ITEMS 

700 FOR X=1 TO 4: READ N*(X): NEXT X 
705 FOR X=1 TO 4: READ R(X): NEXT X 
710 FOR X=1 TO 12: READ C*(X): NEXT X 
740 REM **** M E N U ******* 

750 CLS : PRINT AT 0,7; PAPER 1; INK 7;"H0LI 
DAY EXPENSES" 

760 PRINT : PRINT " THE PROGRAM IS IN 3 SECT 
IONS:",,TAB 7;"1 RATES ENTRY”;TAB 7;"2 CROSS 
RATE CALCULATION";TAB 7;”3 HOLIDAY COSTS" 

770 PRINT : PRINT " FOUR CURRENCIES CAN BE H 
ANDLED AT THE SAME TIME. THE PRESENT 4ARE "; 

INVERSE 1;N$(1); INVERSE 05",“; INVERSE 1;N* 
< 2) ; INVERSE 0;",”; INVERSE 1;N*(3> ; INVERSE 
0;","; INVERSE UN* (4); INVERSE 0;". BUT YOU 
MAY CHANGE THESE BY FOLLOWING THE 
PROMPTS" 

780 PRINT : PRINT "SELECT "; INVERSE 1;"CAPS 
LOCK"; INVERSE 0;" (CAPS SHIFT + 2UTHE CURSOR 
SHOULD ALWAYS BE A "; FLASH 1;”C"; FLASH 0;" 

DURING INPUT" 

790 PRINT : PRINT "CURRENCY CODES SHOULD ALW 
AYS BE THREE CAPITAL LETTERS" 

795 BEEP .1,10 

800 INPUT INVERSE 1; "PRESS <ENTER> ";X* 

810 GO TO 1800 

850 CLS : PRINT AT 0,7; PAPER 1; INK 7;"H0LI 
DAY EXPENSES" 

855 PRINT AT 3,8;"* * M E N U * *" 

860 PRINT AT 7,35"1 RATES TABLE (VIEW ONLY) 

870 PRINT AT 8,3;"2 CHANGE RATES/CURRENCIES 

880 PRINT AT 9,3;"3 CROSS RATES CALCULATION 

390 PRINT AT 10,3;"4 HOLIDAY COSTS TABLE" 



102 Holiday Expenses 


892 PRINT AT 11,3;"5 CHANGE A COST CATEGORY 

895 PRINT AT 12,3;"6 CALCULATE TOTAL COSTS" 
900 BEEP .1,10: PRINT AT 14,7; INK 2; FLASH 
I!"PRESS SELECTION" 

910 LET X=PEEK 23556: IF X=255 OR X<49 OR X> 
54 THEN GO TO 910 

920 IF X=49 THEN LET VF = 1: GO TO 1800 

930 IF X=50 THEN GO TO 1300 

940 IF X=51 THEN GO TO 50 

950 IF X=52 THEN GO TO 400 

960 IF X=53 THEN LET CF=1: GO TO 400 

965 IF X=54 THEN LET TF=1: GO TO 400 

970 GO TO 350 

1798 STOP 

1799 REM ** Approx tourist rates 

1800 CLS : PRINT INK 2; PAPER 6; INVERSE 1;" 
APPROXIMATE TOURIST RATES £STG="; INVERSE 0 

1805 LET X=27 

1810 PRINT " US* USA dollar”;TAB X;"1.52" 
1820 PRINT " CN* CANADA dollar”;TAB Xi”1.87" 
1330 PRINT " FFR FRANCE -franc"; TAB X; " 11.6 ” 
1340 PRINT " BFR BELGIUM (IkLux ) -franc" ; TAB X;” 
76.5" 

1850 PRINT " ITL ITALY lire";TAB X;"2265" 
1860 PRINT " SFR SWITZERLAND -franc"; TAB X;"3 
. 22 " 

1870 PRINT " DMK W.GERMANY D.mark";TAB X;"3. 
84" 

1830 PRINT " ASH AUSTRIA schi11ing";TAB X;"2 
7.0" 

1890 PRINT “ ESC PORTUGAL escudo";TAB X;"154 

1900 PRINT " SPA SPAIN peseta";TAB X;"211" 
1910 PRINT " HFL HOLLAND guilder";TAB X;"4.3 
0" 

1915 PRINT " NKR NORWAY krona";TAB X;"11.0" 
1920 PRINT " IRP IRELAND punt”;TAB Xj"1.22" 
1930 PRINT " DRA GREECE drachma";TAB X;”128" 
1940 PRINT “ MLT MALTA pound”;TAB X;"0.64" 
1950 PRINT " YGD YUGOSLAVIA dinar";TAB X;“12 


1960 PRINT " YEN JAPAN yen";TAB X;"367" 

1970 PRINT " AU* AUSTRALIA dollar";TAB X;"l. 



Holiday Expenses 103 


74 " 

1980 PRINT " NZ$5 NEW ZEALAND dollar” ; TAB X;" 
2.32" 

1982 IF VF=1 THEN PRINT AT 21,0; INVERSE 1;" 

PRESS < ENTER > TO RETURN TO MENU": BEEP .1,10 
: INPUT X*: LET VF=0: GO TO 850 
1985 FOR Y=1 TO 4 

1990 PRINT AT 20,0; FLASH 1;”CURRENCY ";Y;” I 
S " ;N$(Y>;". PRESS <ENTER> TO KEEP ”;N*<Y) ! " , 
OR ENTER A NEW CODE" 

1995 BEEP .1,10 

2000 INPUT "CURRENCY ”;(Y);” (*;(N*<Y));”)”;X 

$ 

2010 IF X$="" THEN PRINT AT 20,0;S$;AT 20,0; 

INK 25 FLASH 1! " PRESS <ENTER> TO KEEP PRESE 
NT “;N*(Y) ; ” RATE: ”;R(Y) ; ", OR ENTER NEW RAT 
E": GO TO 2040 

2020 FOR X=1 TO 13: LET C(X,Y)=0: NEXT X 
2025 LET N*(Y)=X* 

2030 PRINT AT 20,0;S*;AT 21,0; INK 2; FLASH 1 
;" ENTER THE NEW RATE FOR ";N*<Y);“ 

2040 BEEP .1,15 

2045 INPUT Q<S: IF Q*='"* THEN GO TO 2070 
2050 IF CODE Q$<43 OR CODE Q*>57 THEN GO TO 
2045 

2060 GO SUB 3000: LET R<Y)=Q 
2070 NEXT Y 
2030 GO TO 850 

2999 REM ** NUMBER CLEAN-UP 

ROUTINE 

3000 LET Q=VAL Q*: IF GK10 THEN LET Q=(INT < 
100*Q))/100: RETURN 

3010 IF GK100 THEN LET Q=(INT (10*Q))/10: RE 
TURN 

3020 LET Q=INT Q 
3030 RETURN 

3999 REM ** INITIAL DATA 

4000 DATA "FFR",”SFR","US$",”ITL” 

4005 DATA 11.6,3.22,1.52,2265 

4010 DATA "HOTEL","TOURS","BUS",“MEALS","FOOD 
","DRINK",“LAUND","FUEL",“POST","PHONE","GIFT 
S" , "SUNDR” 




104 


Ambush 


High resolution graphics make this forest scene something worth seeing! 
You are trapped by snipers hiding amongst the trees. Your only shelter is 
a low wall. Can you kill ail the snipers before one of them succeds in 
shooting you. 

10 REM **SNIPER AMBUSH** @19 

83 MICHAEL BEWS 

20 DIM P < 5,5) : DIM L < 11,2) : DIM S < 5, 2 ) : DIM 
S$(2,2) 

30 LET TB=5000: LET TM=0: LET K$="000000000 
0 " : LET MN=0: LET AI=0: LET FR=0: LET MX=80 

40 PAPER 4: INK 7: BORDER 1 

50 GO TO 600 

100 REM **KEYBOARD INPUT 

120 LET TM=TM+l: PRINT INK 0; PAPER 6;AT 15 
,28;TM 

125 LET A=PEEK 23556: IF A=255 THEN GO TO 2 
00 

130 IF A = 65 THEN PRINT AT 13,10;R$: LET MN= 
1: GO TO 200 

140 IF A=90 THEN PRINT AT 13,10:0$: LET MN= 
0: GO TO 200 

150 IF <A = 66 AND MN=1) THEN LET FR=1: GO TO 
200 

160 IF A=73 THEN LET MX=MX-S: GO TO 200 

170 IF A=77 THEN LET MX=MX+8: GO TO 200 

180 GO TO 120 

199 REM *ACTION ROUTINE 

210 IF MX<0 THEN LET MX=0 

215 IF MX>220 THEN LET MX=220 

220 IF FR=0 THEN GO TO 300 

225 LEI FR=0 

230 LET Y=23 

235 IF MX< 42 THEN LET Y=Y + 32: GO TO 250 
240 IF MX<70 THEN LET y=y+7: GO TO 250 
242 IF MX<124 THEN LET Y=Y+S: GO TO 250 
244 IF MX<164 THEN GO TO 250 
248 LET Y=Y-8 

250 REM *TRACERS AND SOUND 



Ambush 105 


255 PLOT OVER 1,82,72 
260 DRAW OVER i;MX-60,Y 

262 FOR X=57 TO 53 STEP -1: BEEP .005,X: NEX 
T X 

265 PLOT OVER 1,82,72 
270 DRAW OVER 1;MX-6.0,Y 
272 REM #CHECI< FOR HIT 

275 IF MX>29 AND MX<35 AND K*<1>>"0" THEN P 
PINT AT 5INK 0; PAPER 4;' , ^SA' ,, : LET K* 
(6)="1”: GO TO 290 

278 IF MX >61 AND MX<67 AND K*<2>>"0" THEN P 
RINT AT 8,3; " /?S“ ; INK 0; PAPER *4 ; ” <9//" : LET K* 
( 7) = ’• 1 • : GO TO 290 

280 IF MX >101 AND MX< 107 AND K«(3)> ,, 0" THEN 
PRINT AT 3, 13; "fiS" ; INK 0; PAPER 4;"G/V" : LET 
K*(3)="1": GO TO 290 

282 IF MX>144 AND MX<155 AND K*<4)>"0" THEN 
PRINT AT 9,19;" PS “; INK 0; PAPER A;" GH ": LET 
K$<9)=”1"; GO TO 290 

285 IF MX >185 AND MXC195 AND K*<5)>"0" THEN 
PRINT AT 10, 24; " RS" ; INK 0; PAPER <\\”GH a i LE 
T K$(10)="1" 

289 REM *CHECK FOR WIN 

290 IF KSM6 TO 10) = "11111" THEN GO TO 850 
299 REM *SNIPER ROUTINE 

310 LET K=1+INT (RND*5) 

315 IF K*(K+5)=”1" THEN GO TO 120 

320 IF K$<K)="4" THEN PRINT INK 0; PAPER 4 

AT S < K, 1) ,S < K,2) ;S$ < 2) ; 

330 IF K$(K)="5" OR a<*(k)="7“ AND MN=0) THE 
J GO SUB 400 

340 LET KS(K)=CHR$ (CODE K$(K)+1) 

350 IF K$(K)>"7" THEN PRINT INK 0; PAPER 4 
iAT S(K,1),S<K,2);S$(1);: LET K$(K)="0" 

360 GO TO 120 

399 REM *SNIPER FIRING 

405 LET N=1+INT (RND*P(K,4)) 

410 LET NX=N-P(K,3) 

420 PLOT OVER ljP<K t l),P<K,2) 

425 DRAW OVER 1;NX,-P(K,5) 

430 FOR X=50 TO 47 STEP -1: BEEP .005,X: NEX 
T X 

435 PLOT OVER 1JP(K,1),P<K,2) 

440 DRAW OVER 1;NX,-P(K,5) 



106 Ambush 


445 IF MN=0 THEN RETURN 

450 IF P (K, 1)+NX>78 AND P(K,i)+NX<86 THEN P 
RINT AT 13, 105 <3*5 AT 15,9;P*;: GO TO 830 
460 RETURN 

598 STOP 

599 REM ^INITIALISATION 

602 CLS : PRINT INK 1; PAPER 7;"A M B U S H 
@1983 MICHAEL BEWS";AT 4,0;"YOU HAVE BEEN 

AMBUSHED BY GUNMENIN A FOREST. THE ONLY SAFE 
PLACE IS A LOW WALL BEHIND WHICH YOU TAKE COV 
ER. " 

603 PRINT AT 9,0; INK 1; PAPER 7;“YOU MUST T 
RY TO KILL ALL GUNMEN BY AIMING OVER THE TOP 

OP THE WALL. BUT THE SNIPERS ARE QUITE GOOD 
SHOTS!";AT 16,0;"HOW LONG CAN YOU SURVIVE?.. 


608 LET -f$=CHR$ 21+CHR* 1 + " 

“ +CHR$ 21+CHR* 0 
610 LET G*=CHR* 21+CHR5 1+“ 

“+ CHR$ 21+CHR* 0 

615 FOR x—0 TO 7: FOR y=l TO 9: READ a: POKE 
USE CHRS ( 143 + y)+>c, a: NEXT y: NEXT x 
620 FOR x=0 TO 7: READ a,b: POKE USR "J"+ x,a 
: POKE USR “ K ,! + x , b : NEXT x 
625 FOR X=1 TO 11: READ L(X,1): READ L(X,2): 
NEXT X 

630 FOR X=0 TO 7: READ A: POKE USR "6"+X,A: 
NEXT X: LET W %=“LLLLLLLLLLLLLLLLLLLLLLLLLLLLL 
LLL" 

640 LET t*= u fiBC a +i$+"D£/ ru +f*+"GffZ" 

645 LET SS<1 )= H GH ": LET S$<2)=“ JK" 

650 FOR X=0 TO 7: READ A: POKE USR CHR* (156 
)+X,A: NEXT X 

655 FOR X=0 TO 7: READ A, B: POKE USR "/?" +X,A 
: POKE USR "S” +X,B: NEXT X 
660 FOR X=0 TO 7: READ A,B: POKE USR "7"+X,A 
: POKE USR “U“ +X,B: NEXT X 
665 LET Q$=CHR$ 16+CHR* 0+CHRS 17+CHR* 4+" " 

+ G$+ "L " +G$+ “M" : LET F'$="RS , ‘ 

670 LET R$=CHR$ 16+CHR* 0+CHR* 17+CHR* 4+" T“ 
+ G$ + “(/“ +G$+ 11 “ 

675 FOR X=1 TO 5: READ S(X,1>: READ S(X,2): 
NEXT X 

680 FOR x=l TO 5: FOR y=l TO 5: READ P(X,Y): 



Ambush 107 


NEXT Y: NEXT X 

690 INPUT INK 7; PAPER 2;"PRESS<ENTER>T0 FI 
ND OUT!!!";X$ 

700 REM **PRINT SCENE** 

705 CLS : PRINT PAPER 6; INK 1;"A M B U S H 
@1983 MICHAEL BEWS” 

707 FOR x = 10 TO 26 STEP 4: PRINT INK 0; PAP 
ER 4;AT l,x$t$: NEXT x 
710 FOR x=l TO 11: PRINT INK 0;AT L(X,1),L( 
X,2);t$;: NEXT X 

715 FOR X=3 TO 11: PRINT AT L(X,1)+2,L (X,2) + 
2; INK 6;“I ";: NEXT X 
720 PRINT INK 0;AT 15,0;T*;AT 17,3;T$ 

730 PRINT INK 0;AT 14,0;WS 
800 PRINT AT 13,10; 

805 PRINT AT 15,23; INK 0; PAPER 6;“TIME: 

810 PRINT AT 20,0; PAPER 2; INK 7;"SHOOT SNI 
PERS AS THEY FIRE. KEYS ’ AfcZ ’ (UP/DN) ’ NteM ’ (AIM) 

’B’(FIRE)“ 

820 GO TO 100 

829 REM ** PLAYER SHOT! 

830 PRINT AT 20,0; PAPER 7; INK 2;" 

";AT 20,0; FLASH l;"YOU HAVE BEEN S 
HOT! IN TIME:"5TM;AT 21,0;"THIS IS THE SNIPER 
WHO SHOT YOU''" 

832 PRINT INK 0; PAPER 4; FLASH 1;AT S(K,1) 

, S (K, 2) ; s* (2) ; 

335 BEEP .3,1: PAUSE 5: BEEP .5,1: PAUSE 2: 
EEEP .3,1: BEEP .8,1: BEEP .5,4: PAUSE 2: BEE 
P .4,3: PAUSE 2: BEEP .4,3: PAUSE 2: BEEP .5, 
l: PAUSE l: BEEP .8,1: PAUSE 4: BEEP .5,0: BE 
EP 1,1 

840 GO TO 860 

349 REM *ALL SNIPERS DEAD 

850 IF TB >TM THEN LET TB=TM 

855 PRINT AT 20,0; PAPER 7; INK 2;" 

”!AT 20,0; FLASH 1;"YOU SHOT ALL 3N 
IPERS IN TIME:”5TM;AT 21,0;“BEST TIME SO FAR: 

" 5 TB 

857 FOR Y=1 TO 5: FOR X=1 TO 10: BEEP .05,X* 
2: NEXT X: NEXT Y 




108 Ambush 


860 INPUT INK 05 PAPER 7; FLASH 1;"PRESS <E 
NTER > FOR NEXT GAME“j 
870 LET MX=80: LET K$ ="0000000000" 

880 LET TM=0: LET MN=0: LET FR=0 
890 GO TO 700 

998 STOP 

999 REM Htree 

1000 DATA 3,15,0,127,255,252,0,60,8,3,255,192 
,63,255,138,0,60,0,15,255,240,55,247,248,0,60 
,138,15,255,248,31,63,248,0,60,40,126,255,126 
,31,60,240,0,60, 138, 127,255,254,24,60,48,0,60 
,162,255,255,252,0,60,0,0,60,160,127,223,252, 
0,60,0,0,60,32 

1009 REM * sniper- 

1010 DATA 0,252,63,252,2,124,3,252,0,124,1,25 
2,1,124,3,60 

1019 REM -jf * tree PRINT AT FILE 

1020 DATA 2, 4, 1 , 18,3,6,2,20,3., 24,4, 1 1,4,29,6, 
10,6, 15,7,21,3,26 

1029 REM **WALL 

1030 DATA 51,255,219,255,253,255,183,255 

1039 REM **MAN CROUCHING 

1040 DATA 249,113,113,33,255,113,123,219 

1049 REM *MAN DOWN 

1050 DATA 0,0,0,0,0,0,0,0,160,0,247,224,255,2 
41,247,255 

1059 REM *MAN STANDING 

1060 DATA 248,115,113,255,115,251,118,255,33, 
253,250,251,254,247, 112,255 

1069 REM *s> iper print st -file 

1070 DATA 5,6,8,10,8,15,9,21,10,26 

1079 REM *sniper firing coords 

1080 DATA 47,127,10,50,54,79,110,39,70,37,119 
,110,60,60,37,167,102,127,30,29,207,94,200,12 
0 , 21 

4000 BORDER 7: PAPER 7: INK 0: CLS 



109 


Numbers 


If you’re a Roman who doesn’t understand numbers to base 3, then this 
is the program for you. Convert between binary, hexadecimal, decimal 
and Roman numerals, plus any other number systems (to different bases) 
you care to invent. 7 fingered aliens catered for! 

10 REM ** ROMAN NUMBERS @1 

982 MICHAEL BEWS 

15 POKE 23609,111: POKE 23658,255 
2.0 BORDER 3: PAPER 1: INK 7 
25 DIM K(3): DIM A*(8): DIM C<25) 

30 GO TO 550 
35 GO TO 550 

39 REM **ROMAN NUMBERS 

40 LET L=5: CLS 

50 PRINT PAPER 2;"ROMAN NUMBERS @1983 MICH 
AEL BEWS" 

60 PRINT PAPER 2;AT 2,0;"ENTER A COMPLETE 
ROMAN NUMBER EXAMPLE: MCMLXXXIV 

65 PRINT INVERSE 1;AT 21,0; "PRESS < ENTER > 
TO RETURN TO MENU " 

70 INPUT "ROMAN NUMBER " ; T$ 

75 PRINT AT 20,0;“ 

80 IP THEN GO TO 600 

90 PRINT AT L, 0; " 

"5 PAPER 6; INK 2;AT L,0;"ROMAN NUMBER: 

" ; T$; 

95 FOR B=1 TO 3: BEEP .05,14: BEEP .05,17: 
NEXT B 

100 FOR X=1 TO LEN T$ 

110 LET C(X)=(1000 AND T$(X)="M“)+(500 AND T 
$ ( X)="D"! + <100 AND T$(X)=“C") + (50 AND T*(X)=" 
L ! ' ) + ( 10 AND T$ (X) = 11 X " ) + (5 AND T$ (X ) = " V ” ) + ( 1 A 
ND (T$(X)="I" OR T$(X>="1")) 

120 IF C(X)<1 THEN PRINT AT 20,0;" "; FLA 

SH ii" ";T*(X)5" IS NOT A ROMAN NUMBER !!": G 
O TO 65 

130 NEXT X 



110 Numbers 


130 LET T=0 

190 FOR X—1 TO LEN T$ 

200 IF C(X+1)>C(X) THEN LET C(X)=-C(X) 

210 LET T = T + C < X) 

220 LET C(X)=0 
230 NEXT X 

240 LET X=0: IF LEN T$>9 THEN LET X=1 

250 PRINT INK 2; PAPER 6}" = "5 AT L+X,26;T; 

255 FOR B=1 TO 3: BEEP .05,2: BEEP .05,10: N 
EXT B 

260 LET L=L+2: IF L>20 THEN INPUT PAPER 2; 
INK 7i"PRESS<ENTER>TO RETURN TO MENU";X*: GO 
TO 600 

270 GO TO 70 

299 REM VARIABLE BASE CALCULATOR 
310 CLS : PRINT INVERSE 1;"VARIBASE CALCULA 
TOR @1983 M.BEWS" 

320 PRINT INK 7; PAPER 2:AT 17,0CHOOSE AN 
Y BASE BETWEEN 2 AND 24<Deciroal equivalent'. 
WE SHALL USE LETTERS ’A to N’ FOR SYMBOLSREQ 
UIRED AFTER 9 UP TO ONE LESS THAN THE CHOS 
EN BASE VALUE 

330 INPUT INK 7; PAPER 0J"ENTER CHOSEN BASE 
(2 to 24)";X$ 

340 IF LEN XSK1 OR LEN X$>2 THEN GO TO 330 
350 IF X$(1)<"0" OR X$ (1 ) >" 9 11 THEN GO TO 33 

0 

360 IF LEN X$=2 THEN IF X*(2)<' , 0" OR X*<2)> 
”9" THEN GO TO 330 

370 IF VAL X$<2 OR VAL X$>24 THEN GO TO 330 
375 LET B=VAL X$ 

380 CLS : PRINT INVERSE l!"VARIBASE CALCULA 
TOR @1983 M.BEWS” 

390 PRINT AT 2,0; PAPER 5! INK 1;”BASE: 11 ; A 

T 2,5;B;AT 2,25;"Decimal”;AT 3,255"Equivt.” 
395 LET X$="": IF B<10 THEN LET X*=" " 

400 PRINT AT 4,0;X*;B;”<5";X*;B; "F" ;x$;B;; 
x$;B; "D“ ;x*;B; n C"; x$;B; "B n ;x*;B;"4";x$;B;" H :” 
410 LET K0=99999: IF B=3 THEN LET K0=6560 
415 IF B=2 THEN LET KO=255 

420 FOR X=1 TO 8: LET N=K(X): PRINT AT 4+X,2 
5; ”= ";N;AT 4 + X,0;: GO SUB 445 
425 FOR Y=3 TO 1 STEP -1: PRINT TAB <25-Y#3> 


Numbers 111 


i A*(V);: NEXT Y 
430 NEXT X 
435 GO TO 430 

440 REM *MULTIBASE CALC SUBROUTINE 
445 FOR Z=1 TO 8: LET A*(Z>="": NEXT Z 
450 LET NA=N: FOR Z=1 TO 8 

455 LET I = INT (NA/B): LET A*(Z)=CHR$ (43+(NA 
-B*I>+<7 AND (NA-B*I)>9)) 

460 IF I>=B THEN LET NA=I: NEXT Z 
465 LET AS(Z+1)=CHR$ (4S+I+<7 AND I>9)) 

470 RETURN 

479 REM *DECIMAL INPUT FOR CONVERSION 

480 PRINT INK 7; PAPER 2;AT 19,05"INPUT A D 

ECIMAL NUMBER FOR CONVERSION 

TO BASE "(AT 20,30;B 

485 PRINT INVERSE l;”OR PRESS<ENTER>TO RETU 
RN TO MENU"; 

490 INPUT FLASH 1;“(BETWEEN 1 AND “;(KO);") 
" 5 X$ 

495 IF X*="'' THEN GO TO 600 

500 FOR X=1 TO LEN X$: IF X$(X)<"0" OR X35(X) 
>"9" THEN GO TO 490 

505 NEXT X: LET N=INT (VAL X*): IF N<1 OR N> 
KO THEN GO TO 490 
510 GO SUB 440 
520 PRINT AT 13,0;" 

";AT 13,0; 

530 FOR Y=8 TO 1 STEP -1: PRINT TAB (25-Y*3) 

;A*(Y);: next Y 
540 PRINT “ = ” ; N 

545 GO TO 430 
543 STOP 

549 REM ^initialisation 

550 CLS : PRINT INVERSE 1;"NUMBER SYSTEMSS1 
983 MICHAEL BEWS" 

555 FOR x=0 TO 7: POKE USR ” A "+x,32-32*1NT ( 
x /5)+(64 AND X=1): NEXT x 
560 FOR x=l TO 8: FOR y=0 TO 7: READ a: POKE 
USR CHR$ (144+x)+ y, a: NEXT y: NEXT x 
570 FOR X—1 TO 8: READ K(X): NEXT X 
600 CLS : PRINT INVERSE 1;"NUMBER SYSTEMS@1 
933 MICHAEL BEWS" 

610 PRINT AT 2,0;" THIS PROGRAM EXAMINES A 
FEW OF THE MANY COUNTING SYSTEMS AND EN 




112 Numbers 


ABLES YOU TO INVENT SOME OF YOUR OW 

N 

620 PRINT AT 7,5; INVERSE 1;" MENU 

“;AT 9,5;"1 ROMAN NUMBERS " i AT 

10,5!"2 DECIMAL SYSTEM ";AT 11,5;”3 

BINARY SYSTEM ”;AT 12,5;”4 HEXADECIMAL 

";AT 13,5;“5 INVENT YOUR OWN! 

630 PRINT INVERSE 1; AT 1-7, Sj "SELECT KEY NUM 
BER" 


640 LET A=PEEK 23556: IF A=255 THEN GO TO 6 


645 BEEP .05,20 
650 IF A< 49 OR A 
660 IF A=49 THEN 
665 IF A=49 THEN 
670 IF A=50 THEN 
690 IF A=51 THEN 
690 IF A=52 THEN 
700 IF A=53 THEN 


53 THEN GO TO 640 
GO TO 300 
GO TO 40 
GO TO 900 
GO TO 1100 
GO TO 1200 
GO TO 310 
’99 REM tfROMAN EXPLANATION 

!00 CLS : PRINT PAPER 2;”R0MAN NUMBERS @198 
MICHAEL BEWS" 

i 10 PRINT INVERSE 1;AT 6,0; " IN THE RO 


MAN SYSTEM 
820 PRINT 
L=50 X=10 

840 PRINT 
TER COMING 


INVERSE 1;”M=1000 D=500 C=100 

V=5 AND 1=1 

INK 2; PAPER 7;"A LOWER VALUE LET 
IMMEDIATELY IN FRONT OF A HIGH 
ERVALUE LETTER IS SUBTRACTED FROM THE TOTAL I 
NSTEAD OF BEING ADDED SO THAT LX=60 AND X 


L=40 " 

850 INPUT INK 7; PAPER 2; "PRESS <ENTER> *'5 X 


870 LET RF=l: GO TO 40 

899 REM *DECIMAL EXPLANATION 

900 CLS : PRINT PAPER 2;"DECIMAL SYSTEM 
(Base 10)" 

910 PRINT : PRINT INVERSE 1;"ORIGIN: Ten f 

ingers and thumbs make It convenient 

to count in groups o-f ten!" 

920 PRINT : PRINT INVERSE 1;“METHOD: All c 

ounting systems need enough Symbols to repr 
esentthe count -from zero up to one less tha 
n the base number. This means that symbols 0 



Numbers 113 


1 2 3 4 5 67 8 9 are needed -for DECIMAL. Th 
ere is no separate symbol -forthe BASE (Ten i 
n the case of Decimal),"; 

930 PRINT INVERSE 1;” the BASE being repre 
-sented by 1 0 to indicate 1 complete g 
roup of ten items, plus 0 remainder. 

940 INPUT INK 7; PAPER 2;"PRESS <ENTER> 

950 CLS : PRINT PAPER 2;"DECIMAL SYSTEM 
(base 10)“ 

960 PRINT : PRINT INVERSE 1; “ ’1 0 0’ ther¬ 

efore means ten groups of ten and ’100 0’ 
is ten times ten groups of ten or 10 x 10 
x 10 which is the same as 10C (10 to the pow 

er of 3) . 

970 PRINT : PRINT "106 10F 106 106 106' 106 1 
0-4 10-9" 

980 PRINT " 100 0" 

990 PRINT : PRINT INVERSE 1;"N0TE: ANY NUMB 
ER RAISED TO THE POWER OF 1 (eg 10-4) IS I 
TSELF";CHRS 8;CHR* 8;CHR$ 8;CHR$ 3;CHR$ 3;CHR 
* 8; INVERSE 0; OVER 1;"_ 

1000 PRINT : PRINT INVERSE 1;" AND ANY NUMEE 
R RAISED TO POWER 0 (eg 106) IS ALWAYS 1 

1010 PRINT INVERSE l;"Using this convention, 
relating ascending powers of the BASE val 
ue, you can create a countingsystem to any BA 
SE you wish! 

1020 INPUT INK 2; PAPER 7PRESS < ENTER> ";X 
%\ LET B=10: GO TO 380 
1030 GO TO 600 

1099 REM *BINARY EXPLANATION 

1100 CLS : PRINT PAPER 2;"BINARY SYSTEM 

(Base 2)" 

1110 PRINT : PRINT INVERSE 1;"MECHANICAL AND 
ELECTRICAL SWITCHES ARE SIMPLEST AND M 

OST RELIABLE WHEN THEY HAVE ONLY TWOPOSSIBLE 
STATES, ’ON’ AND ’OFF’." 

1120 PRINT INVERSE i;"FROM OUR NOTES ON THE 
DECIMAL SYSTEM WE CAN SEE THAT BINARY NEE 
DS ONLY TWO SYMBOLS ’0’ AND ’1’TO COUNT UP T 
0 ANY EQUIVALENT" 





114 Numbers 


1130 PRINT INVERSE 1;"DECIMAL VALUE. USING 
THE ’OFF’ STATE OF A SWITCH OR CIRCUIT TO REP 
RESENT ’0’ AND THE ’ON’ STATETO REPRESENT ’1’ 

, IT IS POSSIELETO REPRESENT ANY DECIMAL NUMB 
ER " 

1140 PRINT INVERSE 1;"USING A CHAIN OF VERY 
SIMPLE TWO-STATE DEVICES. 

1145 INPUT INVERSE li"PRESS <ENTER > "iX* 

1150 LET B=2: GO TO 380 
l 199 REM -((HEXADECIMAL EXPLANATION 
1200 CLS : PRINT PAPER 25"HEXADECIMAL 
(Base 16)" 

1210 PRINT INVERSE 1;AT 5,0;" COMPUTERS WORK 
BEST IN BINARY. “ 

1220 PRINT INVERSE 1 UNFORTUNATELY HUMANS D 
0 NOT: 187DECIMAL IS 10111010 IN BINARY! 

1230 PRINT INVERSE 1;“THIS COMPUTER USES 8 B 
IT BYTES. EACH BYTE CAN HOLD NUMBERS FROM 0 
TO 255 lie llilllll BINARY). 16(DEC IMA 

L) IS 2D 

1240 PRINT INVERSE l;”SO HEXADECIMAL IS A GO 
OD COMPROM-ISE BETWEEN COMPUTER AND HUMAN.AND 
NUMBERS FROM 0 TO 255 (DEC) ARE ALL JUST T 
WO HEX DIGITS. 

1250 INPUT FLASH 1;"PRESS<ENTER> “ 5 X$: LET B 
=16: GO TO 380 

2000 DATA 240,16,32,64,240,0,0,0,240,16,112,1 
6,240,0,0,0,128,128,160,240,32,0,0,0,240,128, 
240,16,240,0,0,0,192,128,240,144,240,0,0,0,24 
0,16,32,64,128,0,0,0 

2010 DATA 96,144,144,144,96,0,0,0,240,144,96, 
144,240,0,0,0,1,5,8,10,16,20,32,255 




115 

Toptrainer hsk) 


This is a horseracing game in two parts. In the first section players are 
presented with a board on which their counters are randomly moved by 
the computer. This offers players the opportunity to buy and sell horses, 
win or lose money, train their nags and prepare for stage two, the actual 
race. Prior to the race itself, each player has the chance to decide which 
of his horses he wants to enter and how he wants to place his bets. After 
players have issued ‘race instructions’ to their jockeys, the race is run 
and the winner collects both the prize money and any returns due from 
bets placed. At the start of the game each player has £10,000, and 
throughout the game balances are presented so that you can keep track of 
your fortunes. Play continues until someone reaches six figures, or until 
only one player is left in credit. 

1 REM toptrainer 

2 DATA "Ant "."Bee ","Cola","Dash",“Emu ", 
'Fox ","Gas ”,"Harp","Ibex",“Jinn","Kay ","Li 
na", "Mack", "Nixy”, "01ly” ,"Pug " 

5 RANDOMIZE 

10 GO SUB 3000 

11 INK 0 

12 DIM h*(16,d) : DIM h<16): DIM -F<16): DIM 

p ( 16) 

Id DIM a*(3,5): DIM a<8): DIM v(2,16): DIM 
w (2,16) 

16 DIM t (16) : DIM r(16) : DIM s(16): DIM o(l 
6): DIM q ( d , 16) 

13 DIM b(3): DIM d(3) 

20 FOR i=1 TO 16 

22 READ h*(i) 

25 LET h <i)=INT <RND*10+1) 

26 LET o(i)=-l 

23 LET i ( i)=0 

29 NEXT l 

30 DATA 3,3,3,10,3,17,3,2d 

31 DATA 3,2d,13,2d,18,2d,13,17 

32 DATA 13,10,13,3,13,3,3,3 

35 FOP i=1 TO 12: READ w(1,i),w(2,i): NEXT 



116 Top Trainer 


40 FOR i=i TO 12 

42 LET v<1,i)=6-<4*< < i-1)/4-INT <<i-l)/4)J) 

44 LET v(2,i)=12-INT (Ci-l)/4) 

45 NEXT i 

100 FAPER l: BORDER 1: CLS 
105 INPUT "How many players? (1-8) 11 ; n 

10? IF n< 1 OR r. >8 THEN GO TO 100 
110 FOR i=l TO n 

120 PRINT AT 21,0; "Name o-f Flayer ” ; i ; 

125 INPUT ”;e* 

126 IF LEM e$>5 THEN PRINT AT 21,18;“Max 5 
letters";: GO TO 125 

128 LET s.$(i)=e$: LET a(i) =10000 
130 NEXT i 
135 BORDER 2 


140 INK 6: CLS : PRINT " 

141 INK 7: PRINT AT 2,4;"Y 


00 each." 
142 PRINT 
144 PRINT 
146 PRINT 
148 PRINT 


"Each o-f you is 
11 o-f horses which 
"sel1, train up, 


TOP TRAINER" 
start with £100 


owner/trainer 
>u can buy, " 
id enter -for" 


150 PRINT 
3" 

152 PRINT 
154 PRINT 
156 PRINT 


AT 8,4; "You make money -from winnin 

"races and also by betting on" 
"horses -yours or someone else’s." 
AT 12,4;"Horses improve when they 


158 PRINT 
160 PRINT 
162 PRINT 
164 PRINT 


"well but lose value when they 11 
"don’t. It costs £500 to enter a" 
"horse -for the race." 

AT 17,4;"If you go bankrupt, you 1 


166 PRINT "the chance to train, run or bet" 
168 PRINT "on horses." 

170 GO SUB 9920 

200 BORDER 4: PAPER 6: CLS : INK 2: LET m=l: 
LET w3=0 

201 FOR i=2 TO 30 STEP 7 
205 FOR j=l TO 21 

210 PRINT AT j,i;" "; 

215 NEXT j: NEXT i 

220 FOR i=1 TO 21 STEP 5 

225 FOR j =2 TO 30 



Top Trainer 117 


230 PRINT AT i , j ; "5 

235 NEXT j: NEXT i 

240 PRINT AT 11,10;" "5 

250 FOR j =7 TO 15 

255 PRINT AT j ,165 " “; : NEXT j 

256 FOR i =1 TO r>: LET p(i)=l 

257 LET line=0: LET col=0: IF i>4 THEN LET 
1ine=l: LET coI=-4 

258 PRINT AT w(1,p ( i ) )+1ine,w<2,p ( i ) )+1+ coi; 
CHR$ (48+i) 

259 NEXT i 

260 INK 2 

262 PRINT AT 2,3;"STARTS CHANCE 1SALE1 TRAIN 

265 PRINT AT 7,3;"TRAIN ”;: INK 1: PRINT "E 
ANK BALANCE£";: INK 2: PRINT " ISALE1" 

270 PRINT AT 12,3;"CHANCE" 

272 PRINT AT 12,24; ”CHANCE" 

275 PRINT AT 17,3;"1SALE1 TRAIN CHANCE 1SAL 
El" 

280 FOR j=l TO n 
285 PRINT AT 7+j,16;" 

290 PRINT AT 7+j,10;j;a*(j)5 

291 IF a(j ) <0 THEN PRINT ""; 

292 PRINT AT 7+j,16;a(j);""; 

295 NEXT j 

300 INK 0: PRINT AT 0,0; a$ (rn ) ; " ’ s go..." 

310 LET thro=INT <RND*6+1) 

315 GO SUB 9500 

320 PRINT AT 0,15;thro 

330 GO SUB 9500 

335 LET line=0: LET col=0: IF m>4 THEN LET 
1ihe=l: LET col=-4 

336 PRINT AT w(l,p(m))+1ine,w(2,p(m!)+m+col; 

337 LET x=p(m)+thro 

340 IF x>12 THEN LET x=x-12 
345 LET p (m ) =>c 

350 LET 1ine=0: LET col=0: IF ifl>4 THEN LET 
1ine=1: LET col=-4 

352 PRINT AT w (1, p (m) )+1 ine, w (2,p (tn) l+m+coli 
CHR$ (48+m! 

355 GO SUB 9000 

358 IF x=l THEN GO TO 450 




118 Top Trainer 


360 IF x=2 OR x=6 OR x=8 OR x=ll THEN GO TO 
6000 

362 IF x=3 OR x=5 OR x=7 OR x=10 THEN GO TO 
7000 

365 IF x=4 OR x=9 OR x=12 THEN GO TO 8000 

375 GO SUB 9900 

380 GO SUB 9000 

395 LET m=m +1 

397 IF m >n THEN LET m=l 

400 GO TO 280 

450 PAPER 0: BORDER 3: CLS : INK 6 

452 PRINT "Someone landed on START, so it’s” 

455 PRINT : PRINT "time -for a race...." 

460 GO SUB 9500 

470 LET r=0 

550 FOR i=1 TO n 

557 FOR j=l TO 16 

560 IF oljlOi THEN GO TO 575 

562 CLS : PRINT AT l,0;a«(iJ 

563 PRINT AT 3,0;h$(j>5" Cost £"5h(j)#500: G 
O SUB 5400 

564 PRINT AT 7,0;"Will ";h$(j);" race today? 

565 LET y$=INKEY*: IF y$="" THEN GO TO 565 
570 IF y*='*y" THEN LET a(i)=a(i)-500: IF a( 

i)<0 THEN LET a(i)=a(i)+500: GO SUB 9600: GO 
TO 585 

572 IF y$="y« THEN LET s(j)=l: LET r=r+l: L 
ET x = I NT < h (j ) +-F (j ) / 2) : GO SUB 5000 
575 NEXT j 
585 NEXT i 

599 PAPER 4: BORDER 3: CLS : LET z=0: LET a= 
0: LET rr=0 

600 GO SUB 4000 
605 LET rx = 1 

610 LET m=INT <RND#16+1): IF w3>400 THEN GO 
TO 885 

615 IF s(m)=0 OR s(m)=5 THEN LET w3=w3+l: G 
O TO 610 

630 LET rr = rr + 1: LET s(m)=5 

635 FRINT AT v(1,rr!,v(2,rr)iCHR$ (64+m) 

636 LET z = z + h !m) +-f (m) 

637 LET p(m)=rr 

640 IF r<)rr THEN GO TO 610 


Top Trainer 119 


650 FOR j=l TO 16 

655 IF s<j)<>5 THEN GO TO 66 2 

658 LET h9=h (j )+-f < j ) : IF h9< = l THEN LET h9= 

1 

660 INK 6: PRINT AT 0,0 ;"ODDS”: PRINT AT rx, 
0 ; ""; h* < j , i TO 1);"=";INT (z/h9);” " 

661 LET rx=rx+l 

662 NEXT j 

664 FOR i=1 TO n: INK 0 

665 IF a(i)< =0 THEN PRINT AT 20,0!a*(i) ; ” h 
as no cash to bet!“: GO SUB 9500: GO TO 630 

666 PRINT AT 13,0;a$(i)i” Bet?(Y/N)" 

66? FOR k = l TO 10: LET y*=INKEY*: NEXT k 
668 LET y*=INKEY*: IF y*=““ THEN GO TO 668 
620 IF y*="n" THEN GO TO 690 

672 PRINT "Horse’s letter? "; 

673 FOR k = l TO 10: LET y*=INKEY*: NEXT k 

674 LET y*=INKEY*: IF y*="" THEN GO TO 674 

675 PRINT y* 

676 FOR j=l TO 16 

678 IF y*=h*(j,l TO 1) THEN LET b(h)=j 

679 NEXT j 

680 INPUT “How much money? ";y*: LET a=VAL y 

* 

683 IF a(i)-a<0 THEN PRINT "Not enough none 
y in the kitty!": GO SUB 9500: GO TO 697 

684 LET d <l)=a: LET a(i)=a<i)-a 
690 PRINT AT 13,0;” 

692 PRINT AT 14,0!" 

695 PRINT AT 20,0;" 

696 PRINT AT 21,0;" 

697 NEXT i 

693 GO SUB 9000 

699 GO SUB 4300 

700 FOR j=l TO 16 
705 LET j a=p(j ) 

710 IF s(j )< >5 THEN GO TO 850 
720 LET r(j a)=1: IF v(2,ja! >24 THEN LET r(j 
a) =2 

730 IF v(1,j a) >16 THEN LET r(ja)=3 
740 IF r(j a)=3 AND v(2,ja)<10 THEN LET r<ja 
) =4 




120 Top Trainer 


750 LET m = INT <RND*5> 

760 IF m >2 THEN GO TO 780 

765 IF m=2 AND q<r<ja),ja)>0 THEN LET q(r(j 
a) , ja)=q(r(ja) ,ja)-l: GO TO 780 
770 60 TO 850 
780 GO SUE 1000+100*r(ja) 

785 IF m-i THEN GO TO 350 

800 PRINT AT v(i,ja), v {2, j a );" " 

810 LET v(l,ja)=v(l,ja)+y 
815 LET v(2,ja)=v(2,ja)+x 

820 PRINT AT v(1,ja),v(2,ja)jh$(j,1 TO 1) 

840 IF r (j a)=4 AND v(2,ja)<5 THEN GO TO 860 
850 NEXT j 
855 GO TO 700 

860 GO SUB 9000 

861 PRINT AT 0,0; 11 The WINNER is " 5h*<j): LET 
e$=h$(j) 

862 LET r=rr*1000 

863 PRINT AT 1,0;a*<o<j)); " gets £";r;" priz 
e”: LET a < o(j ) )=a(o(j ) )+r 

865 GO SUB 9900 

867 GO SUB 9000 

868 LET z = INT < z / ( h ( j ) +-f (j ) ) ) : IF z<l THEN 
LET z=l 

869 GO SUB 2000: PRINT AT 2,0;e*;" won at od 
ds o-f ";z; “ to 1" 

870 FOR k = 1 TO n 

872 IF b < k ) = j THEN LET a<k)=a<k>+b(k)*z+b(k 
): PRINT a$(k ); a ’5 bet wins!" 

876 NEXT k 

879 GO SUB 9900 

880 LET r = 1: LET rr = 1 

381 FOR j=l TO 16: LET r(j)=l: LET s(j)=0: L 
ET p (j ) =0 

884 NEXT j 

885 CLS 

886 GO TO 200 
1100 LET x=l 

1110 FOR y=l TO -1 STEP -1: IF SCREEN* (v(l,j 

a)+y,v<2,ja)+x)=" " THEN RETURN 

1120 NEXT y 

1130 LET m=l: RETURN 

1200 LET y=1 

1210 FOR x=-l TO l: IF SCREEN* (v(1,ja)+y,v(2 





Top Trainer 121 


,j a)+ x ) = " " THEN RETURN 

1220 NEXT x 
1230 LET m=l: RETURN 
1300 LET x=-l 

1310 FOR y = l TO -1 STEF -1: IF SCREENS (v(l,j 

a) + y,v(2,ja)+x)=“ “ THEN RETURN 

1320 NEXT y 

1330 LET m=i: RETURN 

1400 GO TO 1300 

2000 GO SUE 9000 

2005 PRINT AT 0,0;"Form changes as a result o 

2006 LET rx=0 

2007 FOR j=l TO 11 
2010 FOR i=1 TO 3 

2020 IF SCREENS (15+i , 2 +j ) =" !l THEN GO TO 20 
50 

2025 LET x=CODE (SCREENS (15+i,2+j))-64 

2027 LET r x = r x + 1 

2030 PRINT r x ; ” 11 ; hS <x ) 5 

2032 IF j>=9 THEN PRINT " Will lose points"; 

2033 PRINT 

2034 LET -f <x)=-f (x)+INT <<13-j)*.75) 

2050 NEXT i: NEXT j 

2052 PRINT 

2055 PRINT ” I-f any horse hasn’t been given a" 
2060 PRINT "mention then it has lost 4 -form" 
2065 PRINT "points. It should have stayed at" 
2070 PRINT "home!" 

2075 GO SUB 9500: GO SUB 9900: CLS 

2076 PRINT "Horse Owner £ before £ now” 
2080 FOR i=1 TO 16: IF s(i)<>5 THEN GO TO 21 
00 

2085 LET i (i) =i (i)-4 

2092 PRINT AT i,0;hS(i>;TAB <7);aS(o(i>> 

2095 PRINT AT i,14;t(i): PRINT AT i,22;h(i)*5 
00 + -f ( i )*250 
2100 NEXT i 
2110 RETURN 

3000 CLS : FOR j=l TO 30 
3010 INK <RND*3) 

3015 PAPER <RNB#8) 

3020 PRINT AT RND#20,RND*215"TOP TRAINER" 

3030 NEXT j: RETURN 





122 Top Trainer 


4000 PRINT AT 2,8:"TTTTTTTTTTTTTTTTTTT" 

4010 PRINT AT 7,3;"TTTTTTTTTTTTTTT" 

4020 PRINT AT 15,0; "TTTTTTTTTTTTTTTTTTTTTTTT" 
4030 PRINT AT 19,0; "TTTTTTTTTTTTTTTTTTTTTTTTT 
TTT " 

4040 FOR i =2 TO 19: PRINT AT i,27; ,, T' 1 : NEXT i 

4050 FOR i=7 TO 15: PRINT AT i,23;"T": NEXT i 

4060 FOR i=3 TO 6: PRINT AT i,14;" ": NEXT i 

4070 PRINT AT 15,4; "O": PRINT AT 15, 13;'* " 

4090 RETURN 

4300 FOR i=3 TO 6: PRINT AT i,14;“ “: NEXT i 

4340 FOR i = 1 TO 16: LET t(i)=INT ( h ( i ) *500+ -f ( 

i)*250): NEXT i 
4350 RETURN 

5000 IF x<=0 THEN PRINT 'This horse is badly 
o-f-f -form" : GO TO 5100 

5005 PRINT "Points available -for race..." ;x 
5010 FOR m=1 TO 4 

5020 IF m=4 THEN PRINT "The 4th quarter must 
be "}x: LET q(m,j)=x: GO TO 5100 
5025 PRINT "Orders -for quarter no. " ; m; " <0-9) 

5027 FOR k=l TO 10: LET y®= INKEYS: NEXT k 
5030 LET y$=INKEY*: IF y*="" THEN GO TO 5030 
5032 IF CODE (y$!<43 OR CODE (y*>>57 THEN GO 

TO 5030 

5035 LET b=VAL y* 

5040 LET x = x-b 

5050 IF x<0 THEN LET x=0: LET b=0 

5055 PRINT b 

5060 LET q<m,j)=b 

5070 NEXT m 

5100 GO SUB 9900 

5105 FOR m= 1 TO 4: LET q<m,j)=0: NEXT rn: RETU 
RN 

5400 PRINT "Current value £ " ; -f (j Hf250+ h (j ) *50 
0 

5405 IF (-f (j )*250+h < j ) *500><=0 THEN PRINT "W 
hich is bad news !!" 

5410 RETURN 

6000 LET x = INT CRND*6+1) 

6010 LET x=-250*x 

6020 IF RND >.5 THEN LET x = -x 

6030 LET a < m)=a(m)+ x 





Top Trainer 123 


6040 GO TO 375 

7000 PRINT AT 0,0;"Does ";a$(m)," wish to sel 
1 a horse?" 

7010 GO SUE 9800 

7020 IF y$=“n” THEN GO TO 7050 

7025 GO SUB 9000 

7026 FOR i=1 TO 16 

7027 IF o(i)< >m THEN GO TO 7045 

7028 PRINT AT 0,0;“Do you wish to sell ";h$(i 
): GO SUB 9800 

7030 IF y$=“n" THEN GO TO 7040 

7031 GO SUB 9000: LET bb=INT (h(i)*500+-f(i)*2 
50): IF bb<0 THEN LET bb=0 

7032 PRINT AT 0,0;h*<i);" cost £“;h<i)*500;" 
Now worth £ *;bb 

7033 INPUT "Buyer No. < i -f none type 0) " ;b 

7035 IF b=0 THEN GO SUB 9000: PRINT AT 0,0;" 
OK, I’ll take it -for £" ;bb: GO SUB 9500 

7036 IF b=0 THEN LET o(i)=-l: LET a(m)=a(m>+ 
bb: GO TO 7040 

7037 IF b >ri THEN GO TO 7033 

7038 INPUT "At what price £“;a 

7039 LET o<i)=b: LET a(m)=a(m)+a: LET a(b)=a( 
b) -a 

7040 GO SUB 9000 
7045 NEXT i 

7050 LET o-f-f er = INT <RND*15+1) 

7060 IF o (o-f-fer) < >-l THEN GO TO 7050 
7070 GO SUE 9000 

7080 PRINT AT 0,0;"I’ll sell you " ; h* ( o-f -f er ) ; 

” tor £"; h (o-f-fer ) *500 
7100 GO SUB 9800 
7105 GO SUB 9000 

7110 IF ySO'y” THEN GO TO 375 
7120 PRINT AT 0,0;"OK - Done" 

7125 LET o (o-f-fer ) =m: LET a (m ) =a (rn) - h (o-f-f er ) *5 
00: GO TO 375 
8000 FOR i=1 TO 16 

8010 IF o ( i)< >m THEN GO TO 8100 
8012 IF a (m)<0 THEN PRINT AT 0,0;" You’re BA 
NKRUPT": GO SUB 9500: GO SUB 9000: GO TO 8100 
8015 PRINT AT 0,0;"How much money to train "; 
h$ ( i ) 

3020 INPUT “£ ";a 



124 Top Trainer 


8030 IF a(m)-a<0 THEN FRINT AT 0,0;"Not enou 
gh cash in the kitty!": GO SUB 9500: GO TO 80 
50 

8034 LET x=INT <RND*5+2> 

8036 LET b= JNT : ;<*a/3000) : IF b>5 THEN LET b 
= 5 

8040 LE T +:U=f(i)+b: LET a<m)-a(m) -a 

8050 GO SUB 9000 

8100 NEXT i 

8200 GO TO 375 

9000 PRINT AT 0,0;" 

9010 RETURN 

9500 PAUSE 55: RETURN 

9800 LET y$=INKEY* 

9805 IF >'<$="" THEN GO TO 9800 
9810 RETURN 

9900 PRINT AT 0,0;" Press any key to conti 
9910 GO TO 9800 

9920 PRINT AT 21,0;"Press any 
9925 GO TO 9800 
9960 PRINT 

9962 PRINT "cashless. 

9966 RETURN 


key " 






125 

Biorhythms 


The theory of biorhythms assumes that the physical, emotional and 
intellectual capacities of an individual are subject to regular cycles of 23, 
28 and 33 days respectively. During each cycle the curve will increase to a 
high point, then sink below the median value, tracing out a sine wave. 
These cycles commence at birth, and progress at different rates, 
producing crossovers, considered to signify ‘critical’ periods (days when 
the individual is more prone to accident or error of judgment) when the 
crossover is one involving the low values of the curves. Especially crucial 
are those days when all three curves meet. Positive high values at 
crossovers have a good effect. 

The program calculates the cycles from the day of birth, and displays a 
graph of the curves for a period of one month from the chosen date. 

10 BORDER 1: PAPER 1: CLS 

20 60 SUB 9000 

100 LET total=0: LET total2=0: PRINT INK 5; 
AT 0, 10; "BIORHYTHMS": PRINT : PRINT : PRINT 

110 PAPER 0: INK 5: PRINT TAB (3);"BIRTH YEA 
R: " : PRINT : PRINT TAB <3);"BIRTH MONTH: 

” : PRINT : PRINT TAB <3);"EIRTH DAY: 

115 PRINT : PRINT 

120 PAPER 0: INK 5: PRINT TAB <3);“YEAR REQU 
IRED: ": PRINT : PRINT TAB (3);"MONTH REQUIRE 

D: " : PRINT : PRINT TAB <3);"DAY REQUIRED 

130 PRINT INK 5; FLASH 1;AT 21,3;"Enter det 
ails now (numeric)" 

140 PRINT PAPER 0; INK 7; FLASH 1;AT 4,3;"B 
IRTH YEAR:": INPUT y: PRINT AT 4,20;y 

150 PRINT PAPER 0; INK 7; FLASH 0;AT 4,3;"B 
IRTH YEAR:" 

160 PRINT PAPER 0; INK 7; FLASH 1;AT 6,3;"B 
IRTH MONTH:": INPUT m: PRINT AT 6,20;m 

170 PRINT PAPER 0; INK 7; FLASH 0;AT 6,3;"B 
IRTH MONTH:" 

180 PRINT PAPER 0; INK 7; FLASH 1;AT 8,3;"B 
IRTH cay:": INPUT d: PRINT AT 8,205d 

190 PRINT PAPER 0; INK 7; FLASH 0;AT 8,35 "B 
IRTH DAY:" 





126 Biorhythms 


200 PRINT PAPER 0; INK 75 FLASH 1;AT 11,3;" 
YEAR REQUIRED:”: INPUT yl: PRINT AT 11,205/1 
210 PRINT PAPER 0; INK 75 FLASH 05 AT 11,35" 
YEAR REQUIRED:" 

220 PRINT PAPER 05 INK 75 FLASH 15 AT 13,35" 
MONTH REQUIRED:”: INPUT ml: PRINT AT 13,205ml 
230 PRINT PAPER 05 INK 75 FLASH 05AT 13,35" 
MONTH REQUIRED: " 

240 PRINT PAPER 0; INK 7; FLASH 1 5 AT 15,35” 
DAY REQUIRED:”: INPUT di: PRINT AT 15,205dl 
250 PRINT PAPER 05 INK 7; FLASH 05 AT 15,35” 
DAY REQUIRED:" 

270 LET tote. i = <y-l) *365.25 

280 LET tot a 12=(y1-1 ) *365.25 

300 IF m>1 THEN LET total=tota1+m<m-1) 

305 IF mill THEN LET tote 12=tota12+m(mi-1) 
310 IF m-1>1 AND y/4=INT <y/4) THEN LET tot 
a 1=tota1 + 1 

315 IF ml-1>1 AND yl/4=INT (yl/4) THEN LET 
tota!2=total2+l 

320 LET total=total+d: LET tota12=tota12+d1 
330 LET day=total 2-total 

335 IF rn 1 =m AND dl=d THEN GO SUB 5000 
35.0 PAPER 7: INK 2: CLS 
360 GO SUB 1000 

37.0 LET p=day- (INT (day/23)*23) 

380 LET e=day-fINT <day/28)*28) 

390 LET i=day-(INT tday/331*331 

490 PRINT Flash 1;at 0,0;"Physical cycle” 

500 FOR r,=p*c TO <p*c)+255 

510 PLOT n-<p*c1,83.5+33.5*SIN <n/<11.5*PI)) 
520 NEXT n 

525 PRINT FLASH 1 ; AT 0,0; " Emot i or.a 1 cycle" 
530 FOR r.=e*c TO <e*c 1+255 

540 PLOT' n-(e*c),83.5+83.5*SIN <n/<14*PI)l 
550 NEXT n 

555 PRINT FLASH 1;AT 0,0;”Inte11ectua1 cycl 
e “ 

560 FOR n=i*c TO <i*c)+255 

570 PLOT n-<i*c1,33.5+33.5*SIN ( n/<16.5*PI)1 
530 NEXT n 

590 PRINT PAPER 0; INK 5;AT 0,0;"Biorhythrn 
■for 

595 PAUSE 100 





Biorhythms 127 


600 PRINT PAPER 7s INK 2; AT 20,3; "Press a k 
ey to restart" 

610 IF INKEY*="" THEN GO TO 610 
620 GO TO 10 
1000 PRINT PAPER 0;" 


1010 LET c=9.369565217 

1015 PRINT PAFEP 0; INK 5;AT 0,0;"DIVISIONS= 

DAYS": PAUSE 100 

1020 FOR x=i TO 25 

1040 PLOT c*x,0: DRAW 0,167 


1060 NEXT x 

1080 PRINT PAPER 0; INK 5;AT 0, 185d15 "/"}ml} 
1100 RETURN 

5000 LET a=.2: LET b=. 4 

5010 BEEP a,0: BEEP a,0: BEEP b,2: BEEF b,0: 

BEEP b,5: BEEP b,4: PAUSE 10: BEEF a,0: BEEP 

a,0: BEEP b,2: BEEP b,0: BEEP b.7: BEEP b,5: 

PAUSE 10: BEEP a,0: BEEP a,0: BEEP b,12: BEEP 

b,9: BEEP b,5: BEEP b,4: BEEP b,2: PAUSE 10: 
BEEP a,10: BEEP a,10: BEEP b,9: BEEP b,5: BE 
EP b,7: BEEP b,5 
5020 RETURN 

9000 RESTORE : DIM m< i 1) 


9010 FOR x=l TO 11 
9020 READ r, : LET m<x)=n 
9030 NEXT x 

9040 DATA 31,59,90,120,151,131,212,243,273,30 
4,334 


9999 RETURN 




128 


Alien 


The alien ship passes overhead, razing the ground below with its power 
beam, and dropping swarms of deadly Veepods. Moving swiftly across 
your territory you fire your missiles as long as the power holds out. When 
a recharge is necessary, your base changes shape, and you must ride out 
the dangers undefended. As an added difficulty, you can choose to have 
an invisible alien, only identifiable when it fires, and providing minimal 
guidance for your missile positioning. 

1 REM @ P.STANLEY 
3 LET hs=0 

10 BORDER 0: PAPER 0: INK 6: CLS 

12 GO SUB 1000 

15 GO SUB 2000 

18 CLS 

19 PAUSE 50 

20 LET x=0: LET y=l: LET z = 14: LET 5=0: LET 
c=0 

25 PRINT AT 0,20;"HI-SCORE:";hs 

30 GO SUB 71 

35 IF RND >.97 THEN GO SUB 200 

40 IF RNDC.05 THEN GO SUB 78 

60 IF c=3 THEN GO TO 305 

61 LET z = z +(2 AND IN 65278=251 AND z<26)-(2 
AND IN 65278=253 AND z>0) 

62 PRINT AT 21,z; INK 35" C " 

63 IF IN 32766=251 THEN GO SUB 100 

63 PRINT AT 0, 25 "SCORE: " i s 

70 GO TO 30 

71 LET x = x+ 1: PRINT AT y,x;" "5q$ 

72 IF x=29 THEN PRINT AT y.xj" ": LET x= 
0: LET y=y+1 

73 IF y=21 THEN LET y=l: LET c=c+l 

74 IF c=3 THEN GO TO 305 

75 RETURN 

78 PLOT 8*x+12,(21-y)*8: DRAW 0,-((21-y)*8) 

79 BEEP .05,-20: BEEP .05,-15 

80 IF x=z+l THEN PLOT OVER 1;8*x+12,(21-y 
)*3: DRAW OVER 150,-((21-y)*3): GO TO 300 



Alien 129 


82 BEEP .05,-20: BEEP .05,-15 

83 OVER l: PLOT 3*x + 12, ( 21 -y ) *8: DRAW 0,-(< 
21-y)*8): OVER 0 

84 RETURN 

100 FOR a=20 TO 1 STEP -1 

110 PRINT AT a,z + 2; "6" 

111 IF RND<.04 THEN GO SUB 78 

112 LET z = z +(2 AND IN 65278=251 AND z<26)-<2 
AND IN 65278=253 AND z>0>: PRINT AT 21,z; IN 

120 GO SUB 71 
150 BEEP .001,a+20 

160 IF a=y THEN IF x=z+l OR x=z THEN LET s 
= s +INT (100/y)+10: PRINT AT y,x;" DD" : BEEP . 
2,0: BEEP .2,12: RETURN 
168 PRINT AT a,z; INK 5;" 

170 NEXT a: RETURN 

200 LET f=x: FOR a=y TO 21 

210 PRINT AT a, -f ; INK 4 ; “ FFFF " 

220 LET z = z +(2 AND IN 65278= 251 AND z<26)-(2 
AND IN 65278=253 AND z>0): PRINT AT 21,zi IN 
K 2; " £ “ 

230 IF a=21 THEN IF -f = z OR -f=z-l OR f = z + l O 
R -? = z +2 THEN GO TO 300 
240 GO SUB 71 
242 PRINT AT a, i 5" 

245 NEXT a 
250 RETURN 

300 PRINT AT 21 , z + 2 ; ■ 

301 FOR a=-15 TO 15 STEP 3 

302 PLOT z*8+20,2 

303 DRAW a,RND*16 

304 NEXT a 

305 FOR a=40 TO -40 STEP -2 

306 BEEP .005,a: NEXT a 

307 IF s > hs THEN LET hs=s 
310 FOR a=-40 TO 40 

320 BEEP .005,a 
330 NEXT a 

332 INPUT AT 0,0;"Do you want to see the ali 
er.?” , v* 

333 IF v*(l)="y" THEN LET g 9="AB": GO TO 33 

6 

334 IF v*(l)="n" THEN LET g*= ** " : GO TO 33 



130 Alien 


6 

335 GO TO 332 

336 FOR -f = l TO 100: NEXT F 

340 PRINT AT 5,li"Press any key to play agai 

350 IF INKEY$<>"" THEN CLS : FOR x=0 TO 200 
: NEXT x: GO TO 20 
360 GO TO 350 

1000 FOR x = USR "a" TO (USR "g"+7): READ y: PO 
KE x,y: NEXT x 

1010 DATA 0,0,60,255. BIN 11101010,63,15,3,0,0 
,60,255,BIN 01010111,252,BIN 11110000,192,8,8 
,8,BIN 01011101,119,BIN 01100011,BIN 01011101 

1020 DATA 1,68,136,16,160,0,4,84 

1025 DATA 129,255,BIN 10100101,36,60,60,126,2 

55 

1030 DATA 0,130,198,BIN 01101100,124,56,16,16 
1035 DATA 8,8,8,8,8,28,0,0 
1040 RETURN 

2000 PLOT 0,95: DRAW 5,0: DRAW 8,28: DRAW 26, 
0: DRAW 0,3: DRAW -25,0: DRAW 11,37: DRAW 27, 
-67: DRAW 12,0: DRAW 0,67: DRAW 3,0: DRAW 0,- 
64: DRAW 35,0: DRAW 0,-3: DRAW 25,0: DRAW 0,3 
: DRAW 5,0: DRAW 0,61 

2020 DRAW -5,0: DRAW 0,3: DRAW 15,0: DRAW 0, - 
3: DRAW 0,-61: DRAW 5,0: DRAW 0,-3: DRAW 18,0 
: DRAW 0,67: DRAW 30,0: DRAW 0,-3: DRAW -26,0 
: DRAW 0,-25: DRAW 15,0: DRAW 0,-3: DRAW -15, 
0: DRAW 0,-33: DRAW 30,0: DRAW 0,-3: DRAW 12, 
0: DRAW 0,67: DRAW 37,-67: DRAW 0,67 

2030 PRINT AT 12,0; INK 3;" LEFT. 

. . 2 RIGHT. X 

FIRE. M 

YOU CAN ONLY FIRE IF YO 

UR BASE IS AND NOT . 

2034 PRINT : PRINT "Press ’I’ For an invisibl 
e alienor ’V’ For a visible one." 

2036 IF INKEY$=”i" THEN LET g*= " ”: GO TO 2 

040 

2037 IF INKEY$= 11 v” THEN LET gGO TO 2 
040 

2038 GO TO 2036 
2040 PAUSE 0 
2050 RETURN 








131 

Galaxians 


You are the commander of the sole surviving laser base on Earth. The 
fleets of Alien spacecraft are moving in for the final onslaught. Some 
swoop down, lasers blasting; others sit at the top of the screen launching 
unstoppable bombs which must be dodged. If you wipe out one fleet, 
another will appear in its place. In short, you haven’t a chance. But make 
sure you take as many of the nasties with you as you can before you go. 

10 BORDER 0: PAPER 0: INK 7: CLS 

15 LET hs=0 

18 GO SUB 8000 

20 GO SUB 9000 

21 LET x = 15: LET sc=0: LET 1=3: LET m=RND*l 
8: LET g = 3: LET h=INT <RND*13) 

30 LET a$=" AB AB AB AB AB AB ": LET b$=" C 
D CD CD CD CD CD ": LET c*=” 

35 LET d$=" EF EF " 

40 LET dir = l: LET ;y=0 

60 LET hit=0 

80 PRINT AT 0,17;"HIGH-SCORE:hs 
100 PRINT AT 2, y; INK 5;a* 

110 BEEP .001,30: BEEP .001,30: BEEP .001,30 

115 BEEP .001,30: BEEP .001,30: BEEP .001,30 

120 PRINT AT 2, y; INK 5;b* 

130 BEEP .001,40: BEEP .001,40: BEEP .001,40 
140 LET x=x+2*<IN 65278=251 AND x<25)-2*(IN 
65278=253 AND x>l) 

150 PRINT AT 21, x;" A >6 

155 IF IN 32766=251 THEN GO SUB 1000: PRINT 
at 0,0; "SCORE: sc 
160 LET y=y + dir 

170 IF y=0 OR y=13 THEN LET dir=-dir 
175 PRINT AT 1,m;" 

180 LET 1=1+1: LET m=m+RND*4-RND#4 

135 IF 1=21 THEN LET 1=3: LET d*=" EF EF " 

186 IF m >25 THEN LET m=12 

137 IF m<0 THEN LET rn=12 

188 PRINT INK 4;AT l,m;d$ 

190 PRINT AT g,h;“ 




132 Galaxians 


200 LET g=g+3: PRINT AT g,h "LM" : IF g=21 TH 

EN LET g=3: PRINT AT 21,h.. LET hl = h: LE 

T h=INT (RND*17)+l: IF hl=x+3 OR hl=x+2 OR hi 
= x + l THEN GO TO 4000 

210 IF RND >.8 THEN IF d*<>" " THEN G 

0 SUB 3000 
300 GO TO 100 

1000 IF POINT <x*8+23,<21-1)*8+4)=1 THEN GO 
TO 1030 

1005 IF POINT (x*8+23,156)=1 THEN LET hit=l 
1010 PLOT x-8-3 + 23,8: DRAW 0,146 
1020 BEEP .02,10 

1030 PLOT OVER l;x*8+23,8: DRAW OVER 150,14 
6 

1040 IF hit=1 THEN LET a*(x+2-y TO x+4-y)=" 
*: LET b*5<x+2-y TO x + 4-y)=“ " : LET sc = sc + 

10: PRINT AT 2, x + 1 ; "HHH" : FOR -f=0 TO 15 STEP 
5: BEEP . 01 , f : NEXT -f : PRINT AT 2,x + l;“ 

1050 LET hit=0 

1055 IF a*=c* THEN GO TO 2000 
1060 RETURN 

1080 IF g=1 THEN IF h=x+l OR h=x+2 THEN RET 
URN 

1100 PLOT x*8+23,8: DRAW 0,<21-l)*8-8 
1110 BEEP .02,10 

1120 PLOT OVER 1;x*8+23,8: DRAW OVER l;0,(2 
1-1 ) 8 - 8-8 

1130 LET d$(x+2-m TO x + 4-m)='* " : LET sc = sc + 

20: PRINT AT 1,x +1j " HHH ": FOR T=0 TO 15 STEP 
5: BEEP ,01,-f: NEXT -f : PRINT AT l,x+li" 

1140 RETURN 

2000 FOR +=0 TO 15 

2010 PRINT AT IJK" 

2020 IF -f =0 OR -f =3 OR -f =6 OR -f=9 OR -f = 12 OR -f 
=15 THEN FOR i=6 TO 2 STEP -2: PRINT OVER 1 
; AT i , -f + 1 ; INK 5 BEEP .01, i: PRINT OVE 

R 1 i AT i , -f +1; INK 5NEXT i: PRINT INK 
5J AT 2,f+ 1; “AB" 

2040 NEXT -f 

2042 FOR -f = 14 TO 26 STEP 2 
2044 BEEP .01,-4 

2046 PRINT AT 7,-f;" UK" 

2047 NEXT -f 

2050 PRINT AT 7,28;“ 


Galaxians 133 


206.0 GO TO 30 

3000 IF d*<2 )<>"£ u THEN GO TO 3080 
3010 INK 3: PLOT tn*8+16, (21-1 )*8-l 
3015 DRAW 0,9-<21-l)*8 

3020 FOR f =38 TO 42: BEEP .001,f: NEXT f 
3030 PLOT OVER 1;m*8+16,<21-1)*8-1: DRAW OV 
ER 150,9-<21-1>#3 

3040 IF POINT (m*8+16,4) THEN GO TO 4000 
3050 INK 7: RETURN 

3080 IF g =1 AND h=x+2 OR h = x + l THEN RETURN 
3100 INK 3: PLOT m*3+36,(21-1>*3-1: DRAW 0,9- 
< 21 - 1 ) *8 

3120 FOR +=38 TO 42: BEEP .001,+: NEXT + 

3130 PLOT OVER 15m*8+36, <21- 1)*8-1: DRAW OV 
ER 150,9-<21-1>*8 

3140 IF POINT <m*8+36,4) THEN GO TO 4000 
3160 INK 7: RETURN 
4000 FOR +=1 TO 15 

4009 PRINT AT 21,x+2; INK RND*6+1 5 "HH" 

4020 BEEP .05,-RND*30 
4030 NEXT + 

4035 PRINT AT 21,x+2;" 

4040 IF sc > hs THEN LET hs = sc 

4050 PRINT AT 10,8; FLASH 1;"G A M E OVER 
”!AT 18,2;"PRESS ANY KEY TO PLAY AGAIN” 

4060 IF INKEYtSO" " THEN CLS : INK 7: FOR + = 1 
TO 100: NEXT +: GO TO 21 
4070 GO TO 4060 

8000 PRINT AT 0,6!"G A L A X I A N S"; OVER 1 
; AT 0, 6; "_” 

8010 PRINT ’"Fleet a+ter +leet, the invaders 
■form arid wait to attack. Some of them dive dow 
n to Earth firing lasers as they da." 

8020 PRINT ’"The invaders in the formation 
drop dangerous bombs to try and destroy your 
laser base. Diving invaders are worth more po 
ints. " 

8030 PRINT ’"As soon as 1 fleet of invaders 
have been destroyed their mother-ship will ar 
range a new battle-line.” 

8035 PRINT : PRINT "z = left x = right m = 
fire " 

8040 PRINT ’’ INVERSE 1;"PRESS ANY KEY TO STA 
RT" 




134 Galaxians 


8050 PAUSE 0: CLS : RETURN 

9000 FOR x = USR "a" TO USR * n *' +7: READ y: POKE 
x,y: NEXT x 

9010 DATA 34,35,36,62,15,7,2,14 

9020 DATA 36,196,228,252,240,224,64,112 

9030 DATA 2,3,7,63,39,39,34,3 

9040 DATA 64,192,32,124,228,223,68,192 

9050 DATA 128,BIN 10100110,242,123,61,47,39,3 

9060 DATA 1,BIN 01100101,BIN 01001111,BIN 110 

11110,BIN 10111100,244,196,192 

9070 DATA 0,240,248,252,14,6,6,6 

9073 DATA 145,82,0,3,192,0,74,145 

9030 DATA 7,31,127,170,170,127,31,7 

9090 DATA 255,255,255,170,170,255,255,255 

9100 DATA 192,240,252,170,170,252,240,192 

9110 DATA 18,19,18,28,4,2,1,1 

9120 DATA 72,200,72,56,32,64,128,128 

9300 DATA 1,31,63,127,225,193,192,192 

9500 RETURN 


135 

Sheepdog Trials 


There’s no getting away from it, sheep are dumb. The pen in the middle 
of the screen is large enough for them all to be housed in comfort, but the 
wretched creatures are demonstrating an unpalatable degree of reti¬ 
cence. Your trusty collie, Jim, is doing the best he can, but he requires a 
firm handling from you and your cursor control keys. As in life, time is 
running out, and this unusually difficult game will defeat you unless you 
manage to get all the sheep into the pen before the last second ticks away. 

If your best efforts are to no avail never fear... there’s always the slaugh¬ 
ter house! 

1 REM by Robert Erskine -from an original i 
dea by Tom Hayward 

10 GO SUB 6000 

20 GO SUE 5000 

30 INPUT "How many players?";A 

40 DIM p(A): DIM 5(4,2): LET DX=15: LET DY= 
15: BORDER 4: PAPER 4: INK 4: CLS 

45 RANDOMIZE : LET DD=1: LET RR=1: DIM R<2) 

: LET R <i)=-l: LET R(2)=l 

46 GO TO 65 

50 CLS : FOR x=0 TO 21: PRINT AT x,0; INK 0 
; "F "; AT x,31; INK 0;"£": NEXT X 

55 FOR x=6 TO 9: PRINT INK 05 AT x,10;”A";A 
T x,20i “: NEXT x 

56 FOR x=ll TO 19: PRINT INK 0;AT 5,x;"G"; 

AT 10, x NEXT x 

57 PRINT PAPER 4; INK 4;AT 10,15;" 

53 PRINT INK 0;AT 5,10! "H "5 AT 5,20; "/";AT 
10, 10; "J“ ; AT 10, 20;'•A'" 

6.0 FOR x=0 TO 31: PRINT AT 0,x; INK 0; ,, _" ;A 
T 21,xj INK 0; "G": NEXT x 

61 RETURN 

30 FOR t=l TO A: REM player loop 

31 GO SUB 50 

85 LET sc=0: LET S(l,l)=3: LET S(l,2)=15: L 
ET S(2,1)=3: LET S(2,2)=16: LET S<3,1)=4: LET 
S(3,2)=15: LET S(4,1)=4: LET S(4,2)=16 

90 PRINT AT 0,0! INK 7; "PLAYER ”;t 





136 Sheepdog Trials 


95 GO TO 13.0 
100 REM dogmove 

105 IF INKEY*=”0" THEN GO TO 3000 

110 LET I=CODE (INKEY*)-52 

115 PRINT INK 4; PAPER 4;AT DX,DY;" " 

120 IF 1=1 AND ATTR <DX,DY-1)=36 THEN LET 
Y=DY-l: LET DD=2 

130 IF 1=2 AND ATTR <DX+1,DY)=36 THEN LET 
X=DX+1 

140 IF 1=3 AND ATTR <DX-1,DY)=36 THEN LET 


X=DX-1 

150 IF 1=4 AND ATTR <DX,DY+1)=36 THEN LET 
Y=DY+1: LET DD=1 

160 IF DD=1 THEN PRINT PAPER 4; INK 0;AT 
X,DY; "A" 

170 IF DD=2 THEN PRINT PAPER 4; INK 0;AT 


D 

D 

D 

D 

D 

D 


X,DY;" B“ 

175 RETURN 

180 FOR z=l TO 4: REM sheeploop 

190 LET SX=S< z , 1 ): LET SY=S(z,2): REM sheepm 


195 GO SUB 100 

200 IF RND >.75 THEN GO TO 230 
210 IF RND >.5 THEN LET SX=S<z,1)+R<2): GO T 
O 220 

215 LET SX=S < z,1)+R(1) 

220 IF RND >.5 THEN LET SY=S(z,2)+R<2) : GO T 
O 230 

225 LET SY=S(z,2)+R(1) 

230 LET E=(ABS DX-S(z,1))/10: LET F=(ABS DY- 
S < z,2) )/10: LET G=S(z,l)-DX: LET H=S(z,2)-DY 
235 LET o=0: LET q=RND: IF q>E AND q>F THEN 


LET o=l 

240 IF G>0 AND o=l THEN LET SX=S<z,1)+1 
250 IF H>0 AND o=l THEN LET SY=S(z,2)+1: LE 
T RR= 1 


260 IF G<0 AND o=l THEN LET SX=S(z,l)-l 
270 IF H<0 AND o=l THEN LET SY=S(z,2)-1: LE 
T RR = 2 

280 PRINT AT S(z,l),S(z,2);“ " 

290 IF ATTR (SX,SY)<>36 THEN GO TO 310 
300 LET S(z,1)=SX: LET S(z,2)=SY 
310 IF RR=1 THEN PRINT PAPER 4; INK 7;AT S 
(z,1),S<z,2); “C H 


Sheepdog Trials 137 


320 IF RR=2 THEN PRINT PAPER INK 7;AT S 
(2,1),3<z,2) 5 "D" 

330 LET RR=INT <RND#2)+1 
340 NEXT z 

350 LET sc=sc+.l: PRINT PAPER 4; INK 7; AT 0, 
21; "Score " ;150-sc; " ": IF sc = 150 THEN GO 

TO 3000 
360 GO TO 130 
370 NEXT t 

2000 BORDER l: PAPER 1: INK 1: CLS 

2005 INK 7: PRINT AT 0,12RESULTS": PRINT : 

PRINT 

2010 FOR x=l TO A 

2020 PRINT TAB 9i"Player " ; x ; " : *;p ( x) 

2030 NEXT x 

2040 PRINT : PRINT TAB 4;"PRESS ANY KEY TO RE 
START" 

2050 IF INKEY*="" THEN GO TO 2050 
2060 GO TO 10 

3000 PRINT INK 0; AT 10,15;'*_" 

3002 LET p(t)=150-sc 
3005 LET c heck=0 
3010 FOR x=l TO 4 

3020 IF S(x,1)>5 AND S(x,l)<10 AND S(x,2)>10 
AND S(x,2)< 20 THEN LET check=check+1 
3030 NEXT x 

3040 IF check< 4 THEN PRINT INK 7;AT 18,2; "Y 
du Tailed to pen the sheep"SAT 19,2;"Your sco 
re is zero": LET P(t)=0: LET check=0: GO SUB 
4000 

3050 IF check=4 THEN PRINT INK 7;AT 18,2;"Y 
our score was ";P(t): LET check=0: GO SUB 400 
0 

3060 GO TO 370 

4000 FOR q=1 TO 400: NEXT q: RETURN 
5000 BORDER l: PAPER 1: INK 7: CLS 
5010 PRINT AT 1,8;"SHEEPDOG TRIALS";AT 3,5;"8 
Robert Erskine 1933“ 

5020 PRINT AT 5,0; "The object o-f the game is 
to "."herd all -four sheep into the penwithin 
a -fixed time limit by ", "moving the dog using 
the arrow ","keys. When he sheep have been “ 

,"penned, close the gate with ","the 0 key an 
d your score will ","be displayed. Less than 



138 Sheepdog Trials 


■four "/sheep in the pen, or running", "over t 
ime, results in a zero "/score" 

5030 PRINT 
5050 PRINT 

5060 PRINT "Any number o-f players can play ", 
"in turn": PRINT 

5070 PRINT "Press any key to start": PAUSE 0 
5030 RETURN 

6000 RESTORE : FOR x = USR "a" TO USR "a"+87 
6010 READ n: POKE x,r. 

6020 NEXT x 

6030 DATA 0,0,2,135,126,124,230,149,0,0,64,22 
5,126,62,103,169,0,0,0,6,127,254,126,37,0,0,0 
,96,254,127,126,164 

6040 DATA 1,1,1,1,1,1,1,1,128,128,128,123,128 
,128,128,128,255,0,0,0,0,0,0,0 

6050 DATA 255,123,128,128,128,128,128,128,255 
,1,1,1,1,1,1,1,123,128,123,128,128,128,123,25 
5, 1,1,1,1,1,1,1,255 
6060 RETURN 


139 

Picture Pairs 


This is one for the kids, testing their powers of observation and memory. 
There are ten pictures of various objects displayed on the screen for a few 
seconds. They are then hidden from view. When you choose one of the 
squares the picture is revealed and you must then identify the square 
behind which the corresponding image is hidden. If the two pictures 
chosen do not form a pair, they are once again hidden and no points are 
scored. 

10 REM ** HI-RES PICTURE PAIRS @1 

983 MICHAEL BEWS 

15 POKE 23609,110 

20 PAPER 5: INK 1 

25 LET LS=100: LET TT=0: LET TS=0 

30 DIM A(12,72): DIM 0(20): DIM R<20>: DIM 
T(20) : DIM U < 20) 

40 GO TO 600 

49 REM ** DISPLAY PICTURES ** 

50 FAPER 6: INK 6: CLS : PRINT PAPER 7; IN 
K 15 INVERSE 15“ PAIRS @1983 MICHAEL BE 
WS " 

60 FOR K=1 TO 10: PAPER K/2: INK K/2: FOR L 
=0 TO 7: FOR M=1 TO 9 

70 POKE USR CHR* (143+M)+L,A(CODE G*(K)-64, 
L*9+M) 

80 NEXT M: NEXT L 

90 LET X=CODE D*(K*2-1)-64: LET Y=CODE D*(K 
*2)-64 

100 PRINT AT Q(X),R(X)i "ABC"} AT Q(X)+1,R(X)5 
"DCF" ;AT Q(X)+2,R(X)5“ GUI "5 
110 PRINT PAPER 6; INK 6;AT Q ( Y) , R (Y) 5 “ ABC 11 
;AT Q(Y)+1,R(Y)5 "DCF" ,AT 0(Y)+2,R(Y)5 "GHI "5 
120 NEXT K 
125 PAPER 7: INK 1 
130 LET A=-40: LET B=-A 
140 FOR Y=160 TO 40 STEP A 
150 FOR X=23 TO 200 STEP B 

160 PLOT X,Y: DRAW 27,0: DRAW 0,-27: DRAW -2 
7,0: DRAW 0,27 



140 Picture Pairs 


170 NEXT x: NEXT Y 

200 LET W=57+INT <RND*3>: LET Z=22595 
210 FOR X=1 TO 9: FOR Y=1 TO 20: POKE Z+T(Y) 
+U(X),W: NEXT Y: NEXT X 
220 PRINT PAPER 6; INK 0;AT 1,4;"l";AT 1,9; 
"2";AT 1,14;*3"SAT 1,19;"4";AT 1,24;"5";AT 3, 
0;"6 “;at 8,0!"7";AT 13,0; m 8";at 18,0;"9"; pap 
ER 2; INK 7;AT 6,27;"TRIES"; PAPER 1;AT 9,27; 
"SCORE"; 

230 FOR X=5 TO 0 STEP -1: PRINT AT 18,30; IN 
K 7; PAPER 2; FLASH 1;X;: FOR Y=i TO 250: NEX 
T Y: NEXT x: PRINT AT 18,30; PAPER 6;“ " 

240 PRINT AT 20,0; INVERSE 1;"ENTER ROW/COLU 
MN NUMBERS TO TRY FOR A MATCHING PAIR OF PICT 
URES " 

250 LET W=18: LET Z=22595 

260 FOR X=1 TO 20: FOR Y=1 TO 9: POKE Z+T(X) 
+U(Y),W: NEXT Y: NEXT X 
270 INPUT INVERSE 1;"ENTER FIRST PICTURE(eg 
82) 11 ; X*: IF X*=" " THEN GO TO 270 
280 IF LEN X*<>2 OR X* (1 ) < " 1 " OR X*<1)>"9" 0 
R X*<2)<"1 " OR X*(2)>"9" THEN GO TO 270 
290 GO SUB 540 

300 IF P<1 OR P >20 THEN GO TO 270 
302 IF S*(P)="1" THEN GO TO 270 
305 LET Q=P: LET SA=P 

307 FOR X=1 TO 9: POKE Z+T(P)+ U (X),40: NEXT 

310 INPUT FLASH 1; INK 2;"ENTER NEXT PICTUR 
E(eg 82)";X$: IF X*= “ " THEN GO TO 310 
320 IF LEN X*<>2 OR X*(1)<"1" OR X*<1)>"9" 0 
R X$(2)<"1“ OR X*(2)>"9" THEN GO TO 310 
330 GO SUB 540: IF P<1 OR P>20 THEN GO TO 3 
10 

332 IF S*(P)="1" THEN GO TO 310 

335 FOR X=1 TO 9: POKE Z+T(P)+U(X),40: NEXT 

X 

340 LET SB=P: FOR X=1 TO 10: IF (D*(X#2-1)=C 
HR* (SA+64) AND D*(X*2)=CHR* (SB+64))+(D*(X#2 
-1)=CHR* (SB+64) AND D*(X*2)=CHR* (SA+64)) TH 
EN LET V=57: LET TT=TT +1: LET TS=TS+1: PRINT 
AT 7,29;TT;AT 10,29;TS;: LET S*(SA)="1": LET 
S*(SB)="1": GO TO 400 
350 NEXT X 


Picture Pairs 141 


360 LET TT=TT+l: PRINT AT 7,29;TTf LET V = W 
400 GO SUB 520 

405 FOR X=1 TO 20: IF S*(X)<>"1" THEN GO TO 
270 

410 NEXT X 

420 REM ** END OF GAME ROUTINE 
430 IF LS>TT THEN LET LS=TT 
440 PRINT AT 20,0;” 

” ; AT 2 

0,05 INVERSE If YOU TOOK ”;TT;" TRIES THIS TI 
ME. LOWEST SCORE THIS SESSION: ";LS; 

450 INPUT FLASH 1;"PRESS <ENTER> FOR NEXT G 
AME";X$ 

460 LET TT=0: LET TS=0 
470 GO TO 640 

519 REM **WRONG GUESS ROUTINE 

520 FOR X=1 TO 9: POKE Z+T(<3)+U(X),V: NEXT X 
: FOR X=1 TO 9: POKE Z+T(P)+U<X),V: NEXT X: R 
ETURN 

529 STOP 

530 FOR X=1 TO 9: POKE Z+T(P)+U(X),57: NEXT 
X: RETURN 

539 REM ** ROW/COLUMN INPUT 

540 LET A=0: LET B=0: LET A=(VAL X$<1) AND < 
CODE X*(l>>53 AND CODE X$(1)<58))+<VAL X*<2) 
AND (CODE X$(2)>53 AND CODE X$<2)<58)> 

550 LET B=(VAL X*(1) AND (CODE X*<1)>48 AND 
CODE X*(1)<54))+(VAL X*<2> AND (CODE X^(2)>43 
AND CODE X$(2)<54)) 

560 LET P=5*(A-6)+B 
570 RETURN 

598 STOP 

599 REM ** INITIALISATION 

600 CLS : PRINT PAPER 7; INK 1; INVERSE If 
PAIRS @1983 MICHAEL BEWS ” 

605 PRINT AT 2,9; PAPER 7; INK 4; FLASH If I 
NITIALISING"; FLASH 0; INVERSE 15 INK 15 AT 4, 
0;" THIS PROGRAM DISPLAYS TEN PAIRS OF HIGH R 
ESOLUTION PICTURES AND THEN CONCEALS THEM FRO 
M VIEW. "5AT 9,0;" THE OBJECT OF THE GAME IS 
TO MATCH ALL TEN PAIRS IN THE LOW- EST PO 
SSIBLE NUMBER OF TRIES. 

610 FOR X=1 TO 11: FOR Y=1 TO 72: READ A(X,Y 
): NEXT Y: NEXT X 



142 Picture Pairs 


620 FOR X=1 TO 20: READ Q(X): NEXT X: FOR X= 
1 TO 20: READ R(X) : NEXT X 
630 FOR X=1 TO 20: READ T(X): NEXT X: FOR X= 
1 TO 9: READ U(X): NEXT X 
640 LET D*="00000000000000000000": LET S*=D* 
: LET E*=D$: LET F*="00000000000": LET G$=F*( 
TO 10) 

695 PRINT AT 15,4; PAPER 7; INK 2; FLASH 1;" 
NEXT GAME IN 25 SECONDS " 

700 FOR X=1 TO 10 

710 LET N=1+INT (RND*11) 

720 IF F$(N)= ,, 1" THEN GO TO 710 
730 LET F$(N) = ,, 1” 

740 LET NA=1+INT <RND*20> 

745 IF ES<NA)="1" THEN GO TO 740 

750 LET E$(NA)="1 B : LET G*(X)=CHR* (64+N) 

760 LET NB=1+INT <RND*20) 

770 IF E*(NB)="1“ THEN GO TO 760 
780 LET E$(NB)="1": LET D*(X#2-1)=CHR* (64+N 
A): LET D$<X*2)=CHR* (64+NB) 

790 NEXT X 
800 GO TO 50 

998 STOP 

999 REM *** ship 

1000 DATA 0,0,0,0,0,8,15,255,224,0,0,0,3,128, 


0,63,255,252,0 


1009 REM ** helicopter 

1010 DATA 0,0,0,0,7,128,0,255,252,0,0,0,0,12, 
192,0,0,0,0,0,0,96,24,96,0,0,0,0,0,0,127,240, 


1019 REM ** bus 

1020 DATA 0,0,0,0,0,0,60,1,224,0,0,0,63,255,2 
52,24,0,192,0,0,0,36,16,84,0,0,0,0,0,0,36,16, 
34,0,0,0,0,0,0,36,16,84,0,0,0,0,0,0,63,255,21 
4,0,0,0,0,0,0,63,255,214,0,0,0,0,0,0,127,255, 
214,0,0,0 

1029 REM railway engine 

1030 DATA 0,0,0,12,3,128,7,131,192,0,0,0,12,1 
95,123,3,1,128,0,0,0,31,255,128,0,0,0,0,0,0,3 




Picture Pairs 143 


1,255, 240,0,0,0,0,0,0, 31,255, 240,0,0, 0,0,3,24 
0,31,255,240,0,0,0,0,2,128,15,255,240,0,0,0,1 
2,2,128,31,255,240,0,0,0 

1039 REM ** tree 

1040 DATA 3,15,0,127,255,252,0,60,0,3,255,192 
,63,255,188,0,60,0,15,255,240,55,247,248,0,60 
,0,15,255,248,31,63,248,0,60,0,126,255,126,31 
,60,240,0,60,0,127,255,254,24,60,48,0,60,0,25 
5,255,252,0,60,0,0,60,0,127,223,252,0,60,0,0, 
60,0 

1049 REM ** car 

1050 DATA 0,0,0,0,127,0,12,0,24,0,0,0,0,132,1 


0,0,0,0,0,127,255,254,0,0,0,0,0,0,30,0,60,0,0 
, 0 

1059 REM ** television set 

1060 DATA 0,0,0,48,0,104,48,0,104,0,0,0,48,0, 
120,63,255,248,0,0,0,48,0,104,63,255,248,0,0, 


1079 REM ** -flying goose 

1080 DATA 0,0,0,0,120,0,1,0,0,0,0,0,0,124,0,3 


1089 REM ** tank 

1090 DATA 0,0,0,64,3,0,51,51,48,0,0,0,64,255, 
0,63,255,240,0,0,0,65,255,128,12,204,192,0,0, 
0,67,0,255,0,0,0, 64,0,0,79,255, 192,0,0,0,64,0 
,0,255,255,240,0,0,0,64,0,0,255,255,248,0,0,0 
,64,0,0,127,255,252,0,0,0 

1099 REM ** clock 

2000 DATA 0,0,0,9,64,144,8,66,16,0,0,0,8,32,1 
6,8,24,16,0,0,0,8,16,16,8,0,16,15,255,240,10, 


2009 REM ** apple 

2010 DATA 0,0,0,1,255,123,3,255,192,0,0,0,3,2 
55,192,1,255,128,0,192,0,3,159, 192,0,255,0,0, 
32,0,7,255,224,0,60,0,0,16,0,7,255,224,0,0,0, 






144 Picture Pairs 


0, 16,0, 7.255,224,0,0,0,0,6.0,0, 7,255,224,0,0,0 
,0,255,0,3,255,192,0,0,0 

2019 REM ** SCREEN PRINT AT X,Y 

2020 DATA 2.2,2,2,2,7,7,7,7,7,12,12,12,12,12, 
17,17,17,17,17 

2030 DATA 3,8,13,13,23,3,8,13,13,23,3,8,13,18 
,23,3,8,13,13,23 

2039 REM #* ATTRIBUTE PRINT AT 

2040 DATA 0,5,10,15,20,160,165,170,175,130,32 
0,325,330,335,340,480,485,490,495,500 

2050 DATA 0,1,2,32,33,34,64,65,66 



145 


Dambusters 


Dambusters is a game in which you have to defend a dam which is under 
attack from enemy aircraft, armed with bouncing bombs. Each bomb 
which succeeds in hitting the dam will blow a section of it away until 
eventually the water pours through and the game is over. 

Your defence consists of two beam guns which are mounted at each side 
of the dam and which fire converging ray beams at a target sight 
controlled by the player. Since the aircraft are out of range, you must aim 
the bouncing bombs themselves by moving your sight up, down, right or 
left and then use the zero key to fire. Unfortunately your beam weapons 
need to be recharged after every three firings and therefore accuracy is 
vital, especially as there is a strong wind which has a tendency to blow 
your sights off course! 

1 REM @ PAUL STANLEY 

2 LET hs=0 

5 BORDER l: PAPER 1: INK 7: CLS 

8 60 SUB 8000 
10 GO SUB 1000 

15 PRINT AT 0,0? BRIGHT U"SCORE:0" 

17 PRINT AT 0,205 BRIGHT 1;"HI-SCORE:"Jhs 
20 PRINT AT 20,0; ink 3j"::::;:::::::::::: 


25 FOR -f = l TO 50: PLOT RND*255, 175-RND*l30: 
NEXT i 

30 LET g-0: FOR -f-1 TO 5: PLOT g,15 + -f: DRAW 
255-2*g,0: LET g=g + 2: NEXT -f 
40: PLOT 0,16: DRAW 128,20: PLOT 255,16: DR 
AW -128,20 

50 PLOT 0,16: DRAW 0,9: DRAW 2,0: DRAW 4,4: 
DRAW 1,-1: DRAW -4,-4: DRAW 0,-8 
55 PLOT 255,16: DRAW 0,9: DRAW -2,0: DRAW - 
4,4: DRAW -1,-1: DRAW 4,-4: DRAW 0,-8 
70 LET d-1 
72 LET s°0 
80 LET a»l 
85 LET p=16 







146 Dambusters 


90 LET y=9 

95 LET x=INT <RND*20)+6 

97 FOR f = l TO 5 STEP 2: PRINT OVER 1 5 AT 5, 
x; INK 6jb*(f>!b*<f+l): BEEP .1,-20: PRINT 0 
VER HAT 5, x;b*(-f) ;b$<-f + l> : NEXT -f: FOR + = 1 T 
O 4: PRINT OVER l;AT 5-f,xi INK 6ib$(5);b*<6 
);AT 5 + -f , x| "£■ : BEEP .1,-20: PRINT OVER HAT 

5-f ,x;b$<5) Jb*<6) i AT 5+-f,x}"S“: NEXT f 

98 LET f=INT CRND*25)+3: LET g-5+INT CRND*1 

1) 

100 LET a *~ m ABCD£F m \ LET ht“10 
120 PRINT OVER HAT y,xia*(a) 

122 LET -f—f + (INKEY*=“8 M AND -f < 29 ) - (INKEY*= " 5 
“ AND -f >2) : LET g=g+ (INKEY$= “ 6 " AND g<17)-(IN 
KEY*=“7" AND g>3) 

125 PRINT OVER HAT g , i i INK 5 I " + " 

126 LET loss-loss+leek 

127 IF loss>1000 THEN GO TO 400 

128 IF INKEY*="9“ THEN IF a<3 THEN GO SUB 
200 

130 BEEP .03,-y 

140 PRINT OVER HAT y,xja*<a) 

145 PRINT OVER HAT g,-f|« + * 

150 LET y=y+d 

155 IF RND >. 6 THEN LET -f—f + INT <RND*1.5)-IN 
T <RND*1.5> 

157 IF RNDC.4 THEN LET g=g+INT <RND*1.5 AND 
g< 18)-INT (RND*1.5) 

160 IF y**ht THEN LET p=p+l: LET d = l: LET a= 
a+ 1 

170 IF y=p THEN BEEP .15,-20: LET a=a+l: LE 
T d—l: LET ht = ht-3 
180 IF a=7 THEN GO TO 350 
190 GO TO 120 

200 LET U-<21-g)*8-25: OVER 1: PLOT 6,29: DR 
AW f*8-2, k: BEEP .03,30: BEEP .03,40: PLOT 6, 
29: DRAW -f *8-2, k 
205 LET s-s+1 

210 PLOT 249,29: DRAW -f*8-245,k: BEEP .03,30 
: BEEP .03,40: PLOT 249,29: DRAW f*8-245,U: O 
VER 0 

215 IF g-y THEN IF x=-f THEN GO TO 300 
220 RETURN 



Dambusters 147 


300 LET sc*=sc+10: PRINT AT 0,65 BRIGHT 11 sc: 
PRINT AT g,-M INK 65"//“: BEEP .08,-10: BEEP 
.08,-12: BEEP .08,-8: BEEP .08,-12: PRINT AT 
g, -f J " " : GO TO 70 

350 FOR a-1 TO 5: BEEP .001,20: BEEP .001,40 
: NEXT a: IF SCREEN* (19,x)-” " THEN GO TO 3 
70 

360 PRINT AT 19,x5" ": GO TO 70 

370 IF SCREEN* <20,x><>":" THEN GO TO 390 

375 LET 1eek=leek+1 

380 PRINT AT 20,xj" “JAT 21,xj PAPER 5j FLAS 
H 1 i “6“ : GO TO 70 

390 LET leek-leek+2: PRINT AT 19,x-l5“ "5A 

T 20,x -11 “ M iAT 21,x-1J PAPER 55 FLASH 1| ”6 
66“: GO TO 70 

400 PRINT AT 10,55 -- G A M E OVER-": PR 
INT AT 13,2j"Press any key to play again.": F 
OR -f = l TO 20: BEEP . 03, i: NEXT i 
405 IF sc>hs THEN LET hs=sc 

410 IF INKEV*< >“" THEN CLS : RESTORE : GO T 
0 10 

420 GO TO 410 

1000 FOR -f=USR "a" TO USR “l“+7: READ b: POKE 
-f , b: NEXT i 

1001 LET loss=0: LET sc=0: LET leek=0 

1010 DATA 0,0,0,16,0,0,0,0,0,0,0,24,24,0,0,0 

1011 DATA 0,0,0,56,56,0,0,0,0,0,0,60,60,60,0, 
0 

1012 DATA 0,0,126,126,126,126,0,0,0,0,254,254 
,254,254,254,0 

1013 DATA 73,BIN 10010010,73,37,BIN 01001010, 
BIN 10010001,BIN 01001010,BIN 1001001 

1014 DATA 153,58,36,219,219,36,58,153 

1016 DATA 0,0,0,8,62,0,0,0,0,0,24,255,66,0,0, 
0 

1017 DATA 0,0,1,255,37,0,0,0,0,0,128,255,164, 

0 , 0,0 

1018 LET b*=*=" / J KL “ 

1020 RETURN 

8000 PRINT AT 0,55"D A M B U S T E R S"5 OVER 

1 5 AT 0,55"_"5 INK 55AT~2,7 

5Paul Stanley." 

8010 PRINT ’"THE YEAR IS 1943. YOU ARE IN 



148 Dam busters 


CHARGE OF A POWERFUL BEAM WEAPONWITH WHICH YO 
U ARE TO PROTECT A DAM FROM THE BOUNCING BO 
MBS OFTHE BRITISH ATTACKERS. THEY HAVESEVERAL 
LANCASTER BOMBERS WHICH FLY TOWARDS YOU AND 
RELEASE THEIR DANGEROUS BOMBS." 

8020 PRINT '"HOWEVER, YOUR TASK IS NOT ALL 
THAT SIMPLE FOR YOUR WEAPON IS UNABLE TO REA 
CH THE LANCASTERS SO YOU MUST JUST SHOOT AT 
THE BOMBS INSTEAD. YOU CAN MOVE YOUR CR 

OSS-HAIR SIGHTS WITH THE CURSOR KEYS." 

8025 PRINT '“PRESS ANY KEY TO CONTINUE.": PAU 
SE 0: CLS 

8030 PRINT “EVEN ADJUSTING THE SIGHTS IS D 
IFFICULT BECAUSE THERE IS A STRONG WIND WH 
ICH CAUSES YOUR SIGHTS TO MOVE ABOUT." 

8045 PRINT ’“FIRE YOR BEAM WITH ""9"““: PRINT 

8050 PRINT "BECAUSE OF THE POWER OF YOUR W 
EAPON AFTER 3 SHOTS IT IS DRAINED OF POW 

ER AND WILL ONLY BE READY BY THE NEXT TIME A 
N AEROPLANE ATTACKS. YOUR BATTLE IS OVER 
WHEN TOO MUCH WATER HAS POURED THROUGH THE BR 
OKEN DAM. "PRESS ANY KEY TO START" 

8060 PAUSE 0: CLS : RETURN 



149 

0X0 


The classic game, played against the computer. But in our version the 
computer can be beaten! 

5 REM NOUGHTS+CROSSES 0 1932 B 

Y MICHAEL BEWS 

10 DIM a*(9): DIM a<9): LET d=0: LET h=0: L 
ET m=0: LET n=0: LET t=0 

12 PAPER l: BORDER 1: INK 7: CLS 

15 LET Y*=CHR* 143+" "+CHR* 143+" 

+ CHRS 143+“ "+CHR$ 143 

20 LET Z$=“■■■■■■■■■■■■■■■■■■■": REM y* AND 
z* TO -form grid 

25 FOR x=0 TO 7: READ a: POKE USR "c"+x,a: 
NEXT x: FOR x=0 TO 7: READ a: POKE USR "a“+x f 
a: NEXT x: REM USR defined x AND o 

30 GO TO 200 

34 REM ******** main routine *** 

35 BEEP .1,t*4: LET t=t+l: LET a$(n)=CHR$ ( 
a+145): LET a(n)=SGN a: LET a=-a: IF a<0 THEN 

PRINT AT 10,30;” "; 

40 FOR x=0 TO 2: FOR y=l TO 3: LET z=x*3+y: 
FLASH 1 AND z=n: PRINT AT 5+5*x,3 + 6*y5a$(z): 
NEXT y: NEXT x: FLASH 0 

49 REM ****check -for win**** 

50 FOR x=0 TO 2: IF ABS <a<3*x+l)+a(3*x+2)+ 
a(3*x +3))=3 OR ABS (a(x +1)+a(x+4)+a(x+ 7))=3 T 
HEN GO TO 300 

60 IF x>l THEN GO TO 80 

70 IF ABS (a (5) + a < 5 + 2* ( x + 1) ) + a ( 5-2* < x +1) ) ) ■ 
3 THEN GO TO 300 

80 NEXT x: IF t=9 THEN GO TO 118: REM **** 
check -for a draw**** 

85 IF a<0 THEN GO TO 150: REM ****players 
turn**** 

90 IF t>0 THEN GO TO 96 

92 LET n=l+2*1NT (RND*5): IF n=5 THEN GO T 
O 92: REM ***choose a corner square on -first 
move*** 

94 GO TO 35 



150 0X0 


95 REM ***check -for possible wi n (U :b 2) , then 
check -for possible opponent’s win (k=-2) 

96 LET k=2: LET n=0 

100 FOR x=0 TO 2: IF a(3*x+1)+a(3*x+2)+a<3*x 
+ 3)=k THEN GO TO 120 

105 IF a(x+l)+ a(x + 4)+a(x+7)=k THEN GO TO 13 

0 

110 IF x=2 THEN GO TO 112 

111 IF a(5)+a(5+2*(x+l))+a<5-2*(x+1))=k THEN 
GO TO 140 

112 NEXT x: LET k--k: IF k<0 THEN GO TO 100 

113 REM ***choose a corner square if pos3ibl 
e (40 attempts)*** 

114: FOR x*1 TO 40: LET n»l+2*INT (RND*5) : I 
F n< >5 AND a(n)*0 THEN GO TO 35 

115 NEXT x 

116 FOR x=l TO 9: IF a(x)=0 THEN LET n=x: G 
0 TO 35: REM ***choose any vacant square***** 

117 NEXT x 

118 PRINT AT 19,135 FLASH 1;"DRAW!"! FLASH 0 
: LET d=d+l: FOR x=13 TO 1 STEP -1: BEEP .l,x 
-8: NEXT x: GO TO 320 

119 REM ***select the vacant square in poten 
tial win row**** 

120 FOR y=3 TO 1 STEP -1: IF a(3*x + y)=-0 THEN 
LET n=3*x+y: GO TO 35 

125 NEXT y 

130 FOR y=3 TO 1 STEP -1: IF a(x+y*3-2)=0 TH 
EN LET n=x+3*y-2: GO TO 35 

135 NEXT y 

140 IF a (5) *=0 THEN LET n-5: GO TO 35 

142 IF a(5 + 2*(x +1))=0 THEN LET n*5 + 2*(x + 1): 

GO TO 35 

144 IF a(5-2*(x+1))=0 THEN LET n=5-2*(x+l): 

GO TO 35 

149 REM ***player’s turn*** 

150 LET x*-INKEY*: IF x*-“" OR x*<■1" OR x*> 
“9“ THEN GO TO 150 

160 LET n=VAL x* 

170 PRINT AT 11,26;" " 5 AT 10,26; "You ”; 

n;: IF a*(n)>“9" THEN PRINT AT 11,26;"AGAIN! 
";: FOR x=l TO 5: FOR y=l TO 3: NEXT y: BEEP 
.1,30: NEXT x: GO TO 150 

180 GO TO 35 



0X0 151 


199 REM ****INITIALISATION***** 

200 PRINT TAB 7;“NOUGHTS U CROSSES"»AT 0,75 

OVER 15"_"5 OVER 0 

210 FOR x = l TO 9: LET a$<x)-STR* x: NEXT x 
230 PRINT : PRINT : FOR X=1 TO 3: PRINT TAB 
65 INK 6lZ*iTAB 6; INK 4;Y*5TAB 65 INK 2jY*jT 
AB 65 INK 5JY*;TAB 65 INK 3SYS>: NEXT X: PRINT 
TAB 65 INK 652$ 

240 PRINT AT 1,15 "I am'* 5 TAB 25 5 "You are" 5 AT 
3,25 “C “ 5AT 3,285 ">4" 5 FLASH 0 
250 LET a=(2*INT <l+RND*2)-3) 

260 LET p*="Me”: IF a<0 THEN LET p*="You" 
270 PRINT AT 2,8jp*5" to go FIRST”j: GO TO 4 

0 

299 REM ****END OF GAME ROUTINE*** 

300 LET p$= 11 YOU WIN": IF a<0 THEN LET p*=" I 
WIN": LET m=m+1: GO TO 310 

305 LET h=h+1 

310 PRINT AT 19,135 FLASH l;p$5 FLASH 0: FOR 
x=l TO 4: FOR y= 1 TO 10: BEEP .04,y*2: NEXT 
y: NEXT x 

320 PRINT AT 20,0;5"Score: You "5h5" Me “ 5 
m;" Draw “;d;AT 21,3;"Press any key for ne 
w game“i 

330 LET x$=INKEY$: IF x*-"" THEN GO TO 330 
335 FOR x=l TO 9: LET a(x)=0: NEXT x 
340 LET r\=0: LET t=0: CLS : GO TO 200 
350 DATA 24,126,102,195,195,102,126,24,129,1 
95,102,60,24,60,102,195 



152 


Space Traffic 


As you travel about in the midst of an asteroid belt recovering lost satel¬ 
lites (well, someone has to do it), you are assailed by missiles and enemy 
spacecraft which you can either dodge or attack. Movement is either to 
left or right using the Z and X keys and your cannon can be fired with the 
M key, although this will lose you points. 

The satellites are collected by manoeuvering your spaceship into them 
and points are gained for each one which you manage to recover. 

Collision with other objects results in destruction, although you are 
alloted five lives at the start of each game. 

1 BORDER 0 : INK 6: BRIGHT 1: PAPER 0: CLS 
10 GO SUB 9000 
20 GO SUB 8000 
50 LET hs=0 

70 PRINT FLASH lj" - ASTEROIDS DETECTE 

D - u. F0R F=1 TQ FQR d= _ 2 0 jo 0 : BEEP 

. 02, d: NEXT d: NEXT -f 
90 LET xl=x 

100 LET x=x+<INKEY*=“x" AND x<26) - < INKEY*=» M z 
“ AND x >5) 

105 IF (ATTR (7,x)=71 OR ATTR <7,x)=66) THEN 
IF SCREEN* <7,x)="“ THEN LET hit=l 
107 IF ATTR < 7,x)=68 THEN FOR d-0 TO 60 STE 
P 20: BEEP .01,d: NEXT d: LET sc»sc+l 
110 POKE 23692,255: PRINT AT 6,xl;'* " JAT 21, 
31 ; “ “ : INK 4: AT 6, xj "-4- 

112 IF q=6 THEN IF w-x THEN BEEP .01,20: B 
EEP .01,10: BEEP .01,20: GO SUB 4100 
115 IF hit=1 THEN LET hit=0: BEEP .1,-10: G 
0 SUB 4100 

117 IF INKEY*=“m" THEN GO SUB 5000 
120 LET 1=INT <RND*30): LET g=(INT <RND*3>*2 
)+l: PRINT INK 7;AT 20,l;a*(g TO g+1)JAT 21, 

1!b*(g TO g+1) 

125 IF c >400 THEN LET 1 = INT <RND*30>: LET g 
»<INT <RND*3)*2)+l: PRINT INK 7;AT 20,l;a*(g 
TO g+1);AT 21,l;b*<g TO g+1) 




Space Traffic 153 


130 IF c=200 THEN LET a %="CDB K " : LET t>$=" 
EF 

135 IF c=300 THEN LET a$= "CDCDCD ": LET b$=” 
EFEFEF" 

140 IF RND >.6 THEN PRINT INK 4JAT 21,RND*3 
05 " 6 " 

150 IF RND<.4 THEN PRINT INK 2;AT 21,RND*3 
0! “H“ 

160 IF ATTR (8, x ) =66 OR ATTR (9,x)=66 OR ATT 
R ( 10,x)=66 OR ATTR ( 11 ,x)=66 THEN GO SUB 40 
00 

185 LET c = c +1 

187 IF c >400 THEN GO TO 90 

190 LET q=q-2: PRINT INK 5; AT q.wl'i’-lAT q + 
l,wi" IF q=0 THEN LET q=20: LET w=x 
200 GO TO 90 

4000 LET d=88*<ATTR (11,x)=66)+96*(ATTR <10,x 
) =66) +104*<ATTR < 9 , x ) =66)‘+ 112* < ATTR <8 ,x)=66) 

: IF d >112 THEN LET d = 112 

4005 PLOT x*3+3,d: DRAW INK 650,120-d: FOR i 
=35 TO 40: BEEP .002,-f: NEXT -f: PLOT OVER 1! 
x*3+3,d: DRAW OVER l;0,120-d 

4100 FOR g=l TO 2: FOR -f=5 TO 0 STEP -1: PRIN 
T AT i ,x-5 + -f i “ . “ SAT i , x + 5-f i " . " 5 AT 10--f,x-5 + -f 
j ". -, AT 10-f, x+5—f 5 ". " i AT -f, x; ". “; AT 10~f,x5" 
. “ i AT 5, x + 5-T j “ . " i AT 5, x-5+-f i " . " 

4110 NEXT -f: OVER 1: NEXT g: OVER 0: PRINT AT 
5,xi " u 

4130 LET 1i=li-1: PRINT FLASH 1JAT 0,0i"LIVE 
S' LEFT: ■ i 1 i 5 TAB 23 5 "SCORE: " ! sc : FOR -f = -30 TO 
0: BEEP .02,-f: NEXT -f 
4135 IF 1i< >0 THEN RETURN 

4137 FOR -f = l TO 4: BEEP .3,0: BEEP .6,10: FOR 
g=l TO 20: NEXT g: NEXT i 
4140 CLS : PRINT AT S^^You Scored " i sc i " po 
ints.* 

4145 PRINT ’’"The high-score is "ihsi"." 

4150 IF sc >hs THEN LET hs=sc: PRINT INK 5’’ 
‘Congratulations!"That is a new high score 

4160 PRINT INVERSE 1’ "'PRESS ANY KEY TO PLAY 
AGAIN." 

4170 PAUSE 0: CLS : GO SUB 9500: GO TO 70 
5000 LET sc=sc-l: FOR -f =7 TO 17 



154 Space Traffic 


5010 PRINT AT f,x5" : BEEP .001,30 

5020 PRINT AT f,x»" IF SCREEN* <f+l,x>-"“ 

THEN GO TO 5030 
5025 NEXT f 

5030 IF ATTR <f+l,x)<>71 THEN RETURN 

5040 PRINT AT f+l,xi“ “ ; FOR d=l TO 3: BEEP . 

03,-20: NEXT d 

5050 IF RND >.4 THEN RETURN 

5055 LET t=INT <RND*4)+1 

5060 FOR d=0 TO t: PRINT AT f+i-d,x-d; INK 7f 
*fl“|AT f+l-d, x + d ; ; AT f + 1 + d, x-d ; “ B "; AT f + l + 
d, x + d;" B" 

5065 BEEP .03,-40 

5070 IF d< t THEN PRINT AT -f + 1-d , x-d ; B " i AT f 
+1 -d , x + d i " ";AT -f + l+d, x-d; * " j AT f+l+d,x+d;" 

5080 NEXT d: RETURN 

8000 PRINT INVERSE lj" SPACE TRAF 
F I C " ’ ’ " BY PAUL STANLEY 

8010 PRINT INK 7’"You are flying through spa 
ce when suddenly you encounter an asteroi 
d belt. ■ 

8020 PRINT INK 4’"Enemy craft will fire at y 
ou given the chance, and other missile 

s are aimed right at you." 

8030 PRINT ’"To score you have to recover 
lost satellites in your craft." 

8040 PRINT INK 5’"If you are desperate, you 
can fire at asteroids, but you lose a satel 
lite in the process." 

8050 PRINT ’"Wove left with Z, right with X, 
and fire with M" 

8060 INPUT PAPER 6; INK 35" PRESS ENTER 

TO START «J LINE q* 

8070 CLS : RETURN 

9000 FOR x=USR "a" TO USR "k“+7: READ y: POKE 
x,y: NEXT x 

9010 DATA 254,124,40,124,40,56,16,16,0,48,72, 

84,72,48,0,0,1,2,60,64,160,132,136,129 

9020 DATA 224,152,8,136,70,9,17,145,130,144,1 

21,5,4,5,6,3,133,3,20,72,16,32,32,192 

9030 DATA 129,66,60,36,36,60,66,129,16,16,56, 



Space Traffic 155 


84,84,56,16,124,0,16,8,16,32, 16,16,56 

9040 DATA 24,54,41,66,169,130,84,56,38,91,162 

,152,130,106,60,4 

9500 LET J K ": LET b*= u u : LET x= 

15: LET c“0: LET hit=0: LET sc=0 
9510 LET q-=20: LET w=x: LET li=5 
9700 RETURN 




156 


Dam Eaters 


The object of this game is to prevent the dam-eating creatures from 
eating away the dam which is built up on the left-hand side of the screen 
by dropping shells on them from any of the three cannon at the top. The 
dam eaters enter randomly from the right of the screen and gradually 
chew away the bricks of the dam until finally they break through and you 
have lost the game. The game contains a number of other features which 
you will have to discover by experience. 

1 BORDER 01 PAPER 0: INK 7: CLS 
5 LET hs=0 
10 GO SUB 9000 
15 GO SUB 7000 
17 GO SUB 9800 
20 GO SUB 8000 
30 FOR i = l TO n 

40 LET x <i)=x <iJ-1: IF RND>.8 THEN GO SUB 
1000 

50 PRINT AT y ( i ) , x < i ) ( INK i+3f u Uif " 

60 IF ATTR (y(i),x(i)-l)=22 THEN GO SUB 20 

00 

80 NEXT i 

90 LET q*=INKEY* 

100 IF NOT b THEN IF q*<>"" THEN LET g=<VA 
L q*)*6+2: LET sl=VAL q*: LET -f=0: LET b-l: B 
EEP .01,30: IF g< >8 AND g<>14 AND g<>20 THEN 
LET b=0 

110 IF NOT b THEN GO TO 30 
115 FOR 1=1 TO 2 
140 PRINT AT i ,g;■ " 

150 LET -f=f + l: IF -f =21 THEN GO TO 5000 
160 IF SCREEN* <-f | g)=“» THEN GO TO 3000 
170 PRINT AT i ,g5 » I M 
190 NEXT i 

200 IF n< 3 THEN LET c=c+l: IF c = 130 THEN L 
ET n=n+1: LET c=0: PRINT AT 17,8;"ENEMY REINF 
ORCEMENT": FOR 1=1 TO 30: BEEP .03,1: NEXT i: 
PRINT AT 17,85" 

999 GO TO 30 



Dam Eaters 157 


1000 PRINT AT y<i),x(i>|" 

1005 LET y ( i )=y(i)+1-(2 AND RND>.5) 

1010 IF y ( i )=0 THEN LET y(i)=20 
1020 IF y(i)=21 THEN LET y<i)=l 
1030 RETURN 

2000 PRINT AT y(i), x < i ) -15 BRIGHT 1 i a E6 m i BEE 
P .03,5: PRINT AT y(i),x(l)-l; BRIGHT 
BEEP .03,0 

2010 PRINT AT y<i),x<i)-15 " 

2020 IF SCREEN* <y(i),x<i)-2)=" " THEN GO TO 
4000 

2030 LET y <i)=INT <RND*20)+1: LET x(1)=29 
2040 RETURN 

3000 PRINT AT f,g-15 BRIGHT 1 \*F6F". FOR o=3 
TO 9 STEP 3: BEEP .01,o: NEXT o: PRINT AT f,g 
-15 BRIGHT 1\"GFG"\ BEEP .05,25: PRINT AT f , g 
-1 5 " 

3005 LET sc = INT (sc + sl*2 + -f/3) : PRINT AT 0,29} 
sc 

3010 LET b=0 
3015 FOR i=l TO n 

3020 IF -f =y <i) THEN IF g=x<1) OR g=x(i)+l TH 
EN GO TO 3500 
3030 NEXT i 

3500 LET y <i)=INT <RND*20)+l: LET x(i)=29 
3510 GO TO 30 

4000 FOR o=2 TO 5: PRINT AT y<iJ,o5 INK 15"1" 
: BEEP .07,-20: NEXT o 

4010 FOR o=y(i) TO 20: PRINT AT o,5; INK 1 5 ”■ 
•: BEEP .07,-20: NEXT o 

4020 FOR o=20 TO 0 STEP -1: PRINT AT 0,55 INK 

i; 'uiuininiumiiiiniiii 

4025 BEEP .07,-20 

4030 IF SCREEN* <o,4)=" * THEN PRINT INK 15 
AT o,4; 

4040 IF SCREEN* <o,3)=" “ THEN PRINT INK 15 
AT 0,35 
4050 NEXT o 

4055 PRINT PAPER 15 INK 6 5 AT 4,65"You Scored 
* 5 sc 5" Points." 

4060 IF sc >hs THEN PRINT AT 6,65 PAPER 15 IN 
K 65"Wei 1 Done! That’s A New"5 AT 7,6!"High Sc 
ore!!": LET hs=sc 



158 Dam Eaters 


4070 PRINT PAPER IS INK 6;AT 9,65"The High-S 
core Is “!hs 

4080 PRINT PAPER 1; INK 6JAT 11,65“PRESS A K 
EY TO PLAY AGAIN" 

4090 IF INKEY*="" THEN GO TO 4090 
4100 CLS 5 GO TO 17 

5000 PRINT AT 20,gs INK 55“/“: BEEP .1,-30: P 
RINT AT 20,g;“ “ 

5010 LET b=0: GO TO 30 

7000 PRINT AT 0, 6 5 11 D AM EATERS 

7020 FOR f=29 TO 4 STEP -1: PRINT INK 55 AT 2 

,U“VS BEEP .03,-20: NEXT f 

7030 PRINT AT 2,35 BRIGHT 15 "fO ": BEEP .03,5: 

PRINT AT 2,35 BRIGHT 15 “GF ": BEEP .03,5: PAU 
SE 25: PRINT AT 2,05“ 

7035 CLS : PRINT AT 0,65“D AM EATERS 

7040 PRINT INK 6;AT 2,05“Can you prevent the 
dam -from being broken by the dam eaters?" 
7050 PRINT INK 5’ ’ "Release bombs -from any of 
the 3 cannons above the dam with the ke 
ys 1-3." 

7060 PRINT INK 4’’“There are several more fe 
atures which you will have to wait to find o 
ut ! " 

7070 PRINT INK 6’’“Press any key to start": 
PAUSE 0.* CLS : RETURN 
8000 DIM y(3): DIM x<3) 

8010 LET sc=0: LET b-0 
8020 LET n=l: LET c=0 

8030 FOR i=1 TO 3: LET y<i)=INT <RND#20>+1: L 
ET x ( i )=29: NEXT i 
8499 RETURN 

9000 FOR f-USR "a" TO USR "i"+7: READ g: POKE 
f,g: NEXT f 

9010 DATA 119,119,0,221,221,0,119,119,0,221,2 
21,0,119,119,0,221,221,0,119,119,0,221,221,0 
9020 DATA 0,255,171,0,0,171,255,0,28,39,255,2 
55,255,255,0,0 

9030 DATA 96,10,193,20,101,128,51,140,194,40, 

67,24,130,40,67,16 

9040 DATA 63,31,15,7,3,3,1,1 

9060 DATA 2,196,40,23,232,16,231,24 




Dam Eaters 159 


9800 FOR -f=0 TO 20 STEP 3: PRINT INK 6; PAPE 
R 2i AT -f , 2; “AAA" > AT 4 + 1,2 ! H BBB H i AT -f+2,2 i "CCC 
“ : NEXT -f 

9805 FOR 4=0 TO 20: PRINT INK 1J AT -f,0! 

NEXT -f 

9810 FOR 4=0 TO 31: PRINT AT 21,4} INK 15“1": 
NEXT -f 

9820 PRINT INK 3;AT 0,7}*H H H “ 

9830 PRINT AT 0,23i“Score:0“ 

9999 RETURN 



160 


Buzzy Bee 


In Buzzy Bee you control a small bird which pecks away at the stems of a 
row of plants which are gradually growing towards the top of the screen. 

If any of the plants should reach the top a bee will drop down and take 
the nectar and you have lost the game. 

The bird can be moved from left to right by using the Z and X keys and 
the M key will cause it to peck, although none of the stems can be 
pecked twice in succession. 

1 BORDER 0: PAPER 0: INK 7: CLS 

6 CLS 

7 GO SUB 9700 
3 GO SUB 9000 

10 LET hs=0 
20 GO SUB 3000 

50 POKE 23674,255: POKE 23673,255: POKE 236 
72,255 

100 PRINT FAPER 5;AT yl.xl;" “ ; AT yl + l,xl 
» " "> INK 0 ;at y,x;bs;AT y+l,x;cs: LET yl=y 

: LET x1=x 

120 IF y(t)=4 THEN GO SUB 1000 

430 LET g=g+<2 AND IN 65273=251 AND g<31>-(2 

AND IN 65278=253 AND g>0) 

500 PRINT AT -f 1 , g 1 ; INK 4; OVER l;"P“ ; AT -f , g 
> 11/0,1 : LET -f 1 =-f: let gi=g 
510 IF IN 32766=251 THEN GO SUB 2000 
700 LET t=INT (RND*5)+i: LET y(t)=y(t)-1: IF 
y < t)< h2 AND y(t) > h1 THEN LET h2=y(t): LET f 
1 2 = t 

710 IF yltXhl THEN LET hl=y<t): LET tll = t 
750 PRINT INK t + 2;AT y (t) , t*6-5 j n M A'"; AT 

y (t) +1 , t*6-5i “ “iAT y (t) +2, t*6-5; “<3 1 R " ; 

INK 4;AT y(t)+3,t*6-5;" k ";AT y(t)+1,t*6- 
3; ”0" 

800 IF x<f11*6-4 THEN LET b$=a$(3): LET c$= 
aS(4): LET x=x+l 
820 IF x>f11*6-4 THEN 
a$C 2) : LET x = x-l 
999 GO TO 100 


LET b$=a$Cl): LET c$= 



BuzzyBee 161 


1000 IF x=t#6-4 THEN GO TO 1500 

1002 IF g=t*6-3 THEN PRINT INK 4; OVER 15AT 

■f ,3i m P u 

1005 FOR + =4 TO 17 

1010 PRINT INK t + 2 ! AT +,t*6-5!" " ! AT -f + 1 

, t*6-5;"/) /V'iAT + +2,t*6-5;“ "iAT ++3,t* 

6-5; “O ■ /?"; INK 4; AT ++4,t*6-4;" U " ! AT -f+2, 
t-X-6-3; "O" 

1020 BEEP .04,+ 

1030 NEXT + 

1035 LET +=21 
1040 LET y < t)=18 

1050 IF t=+li THEN LET +11=+12: LET hl=h2 
1100 IF g=t*6-3 THEN PRINT INK 4; OVER 15 AT 
+iS' 

1300 RETURN 

1500 IF b$=a*(11 THEN LET d = x + l 

1502 IF b$=a*(3) THEN LET d=x 

1503 LET t irne=INT <<65536*PEEK 23674+256*PEEK 
23673+PEEK 236721/49) 

1505 FOR 1=0 TO 3: FOR g=l TO 10 
1510 BEEP .005,2: BEEP .005,5: PRINT AT i,d; 
PAPER 5; INK 0;a$(1,2 TO ): BEEP .005,7: PRIN 
T AT i,d 5 PAPER 5; INK 0;a$<3, TO 2) 

1520 NEXT g 

1530 PRINT AT i,xj PAPER 55" ";AT i+l,xj IN 

K 0;b¥;AT i+2,x;c$ 

1540 NEXT i 

1550 FOR +=1 TO 200: NEXT + 

1560 CLS : PRINT AT 4,0; INK 6;"You survived 
+ or 11 ; time;" seconds.” 

1570 IF time >hs THEN LET hs=time: PRINT INK 
5’’"Well done! That’s the longest recorded 
time!": GO TO 1600 

1580 PRINT ’ INK 5’"The longest recorded time 
staridsat ";hs;" seconds." 

1600 PRINT INK 7’’"Press any key to play aga 

1610 IF INKEY*="" THEN GO TO 1610 
1630 CLS : GO TO 20 

2000 BEEP .01,20: IF g<>3 AND g<>9 AND g<>15 

AND g< >21 AND g<>27 THEN RETURN 

2005 IF g=u*6-3 OR y((g+3)/6)>15 THEN RETURN 



162 BuzzyBee 


2010 LET u=(g+3)/6 
2020 LET y(u> =y(u)+2 

2050 PRINT INK u+2;AT y<u)-2,u*6-5;" ";A 

T y(u)- 1,u*6-5; ” “;AT y(u) ,u*6-5; N“ \ 

AT y < u) +1, u*6-5 j “ ” ; AT y (u ) +2, u*6-5 ; "<3 ■ 

/?"; INK 4j AT y <u> +3,u*6-4; " ■ ” ; AT y<u)+l,u*6 
-3; "O" 

2070 IF u=-f 11 THEN IF y<u)>h2 THEN LET hl=h 
2: LET -f 1 l=-f 12: LET -f!2=u: LET h2=y(u) 

2090 RETURN 

8000 DIM y (5) : FOR i = l TO 5: LET y(-f)=18 
8010 PRINT INK -f +2 j AT y < -f ) , -f *6-5 ; " fl N“ ;AT 
y (-f ) + 1 , i *6-5; “ " ; AT y (i ) +2, -f*6-5 ; ”<3 K /?••-, 

INK 4 ; AT y<-f)+3,-f*6-3; "■";AT y <-f ) +1, -f*6-3; "O 

8020 NEXT -f 

8100 FOR -f=0 TO 3: PRINT AT f,0; PAPER 5;" 

”: NEXT i 

8500 LET y=0: LET x=15 
8510 LET -f = 21 : LET g=15 

3520 DIM a$(4,3): LET a$(1)=" ABC ": LET a$(2)= 
“D£F": LET a* < 3)= "GHI ": LET a$(4 )=“JKL ": LET 
b$=a$(l): LET c$=a$(2l 

8530 LET yl=y: LET xl = x: LET fl=-f: LET gl=g 
8540 PRINT AT f,g; OVER 1; "P" 

8550 LET hl=20: LET h2=20: LET -fll=2: LET i 12 
= 4 

8560 LET t=l 
8570 LET u=10 
8900 BEEP .5,0 

8999 RETURN 

9000 PRINT | ■ |i| h g ggg 

■MB ■ ■■■■■■ ■«■■■■■ ■ 

■■■ BMtf MS It ■■■« M ■ ■ M ■ | ■ g ■ 

■ USB ■■■ ■■■ RUCK M BBB MBS ■■■" 

9010 RANDOMIZE 100 

9020 LET y=3: LET yl=8: FOR -f = i TO 29 
9025 BEEP .01,-10 

9030 PRINT AT yl,-f-lj" 11 ; AT y 1 +1 ,.-f- 1 5 *' ; 

AT y, -f} "GHI "; AT y+i,-f;'V L «; INK 6; AT y+l,+ + i 

. 

9035 LET yl=y 
9040 BEEP .01,-10 

9050 IF RND >.5 THEN LET y=y+l-<2 AND RND>.5) 




BuzzyBee 163 


9.060 NEXT -f 

9070 PRINT AT yl s -f-i;" ” ; AT yl+l,f-l;" 

9030 PRINT INK 6;AT 6,6;" @ PAUL STANLEY" 

9100 PRINT AT 8,0; INK 5!”A giant bee likes n 
ectar -from giant -flowers, but you have to 
stop it because you eat nectar as well!!" 

9200 PRINT INK 6’ "Chop chunks out o-f the sta 
Iks with M (but note that once a piece h 

as been cut out o-f one stalk you must cut t 
he next piece out of a different stalk)." 

9300 PRINT ’"Move left with Z k right with X. 

9400 PRINT INVERSE 1’"PRESS ANY KEY TO START 

9500 IF INKEYS=”" THEN GO TO 9500 

9600 CLS : RANDOMIZE : BORDER 5 

9700 RESTORE : FOR x=USR "a" TO USR "r“+7 

9710 READ n: POKE x,n 

9720 NEXT x 

9730 DATA 0,2,34,17,9,5,5,5,7,24,32,33,66,66, 
68,69,123,124,226,34,34,66,130,12,7,13,25,63, 
63,31,15,7,170,170,170,170 

9740 DATA 170,170,170,170,240,243,252,254,252 
,248,240,224,1,62,71,68,63,66,65,48,224,24,4, 
132,66,66,34,162,0,64,63,136,144,160,160,160, 

15,31,63,127 

9750 DATA 63,31,15,7,35,85,85,35,85,85,85,85, 
224,176,152,252,252,243,240,224,96,224,224,11 
2, 120,60,30, 15,6,6,7, 15,30 

9760 DATA 60,120,240,103,104,75,139,145,73,31 
,255,220,220,72, 126,72,23,20,20,15,7,3,1,0,0, 
0,0,240,224,192,128,0,0,0,0 
9770 RETURN 



164 


Heli-Bomber 


After all this intergalactic warfare, you’ll find it refreshing to return to 
Earth and struggle to cope with a fleet of helicopters whose pilots are 
committed to wiping out your fair city. Thankfully you’re in control of 
the metropolitan laser tower, and it’s up to you to shoot down the bombs 
before they hit the city. You’ll get points for every bomb you hit, and 
whilst you can wipe out a chopper if you feel so inclined, you will not add 
to your tally by so doing. You move your laser sight with the cursor keys, 
and the game is over once one of the bombs finds a clear path to the 
ground or the laser tower itself is destroyed. 

1 REM HELI-BOMBER @ R.Erskine 1983 
10 BORDER 0: PAPER 0: INK 7: CLS 
20 LET sc=0: LET hs=0 

30 PRINT AT 0,95"HELI-BOMBER": PRINT 
40 PRINT : PRINT “Your city is under attack 
by "helicopter bombers. When a bombhas a 
clear path through to the ground or when your 
laser tower is destroyed the game ends" 

50 PRINT : PRINT “Move your laser sight usi 
ng the arrow keys and try to shoot downthe bo 
mbs using the 0 key" 

60 PRINT : PRINT AT 20,05"Press any key to 
start" 

70 IF INKEY*="" THEN GO TO 70 
80 GO SUB 2500 

100 LET lin=lin+<2 AND INKEY*="6" AND lin<13 

105 IF ATTR (21,151=0 THEN GO TO 3000 

120 LET co1=co1 -(2 AND INKEY$="5">: IF col<0 

THEN LET col=31 

130 LET 1in=1in-<2 AND INKEYS="7" AND lin>0) 
140 LET col=col+(2 AND INKEY$="8"l: IF col>3 
1 THEN LET col=0 

150 PRINT INK 4 ;AT ln,cl|" " 5 AT 1 in,co15" + " 
: LET lr,= lin: LET cl=col 

160 IF col 1=30 THEN LET coll=0: LET linl = IN 
T (RND-X-101+1 

161 LET 1inl=linl+(1 AND RND>.7 AND linl<13) 



Heli-Bomber 165 


170 LET linl=lini+(l AND RND>.7 AND linl<13) 
180 LET linl=linl-(l AND RND>.7 AND linl>0) 
190 LET coll=COl1+(1 AND coll<30> 

200 PRINT INK 0; PAPER 05 AT lnl,clli" " 5 AT 
lnl+l,clli* "5 PAPER 05 INK 5;AT linl,colli 

“_";AT 1inl+1,colli U D£": LET lnl=linl: LET c 

1 l = col 1 

210 IF g=l AND RND>.8 THEN LET lin2=linl+2: 
LET col2=co11: LET g=-g: LET ln2=linl+2: LET 
c12=co12 

215 IF g=l THEN GO TO 270 
220 LET 1in2=1in2+l 

250 PRINT INK 0; PAPER 0)AT In2,cl2i u "5 IN 
K 7iAT 1 i n 2, c o 1 2 5 u F" LET In2=lin2: LET cl2=c 
ol2: BEEP .01,-10: IF 1in2=21 THEN GO TO 300 
0 

260 IF ATTR (1in2+1,co12)=3 THEN PRINT PAP 
ER 0j INK 0 i AT 1 i n2 , co 12; " 11 5 PAPER 7jAT lin2 
+ 1,col2i "F "; PAPER 0!AT .. LET 

g = -g 

270 IF INKEYSK >"0 " THEN GO TO 100 
280 LET x=122: LET y=42: PLOT INK 6ix,y 
290 LET xx=col*8: LET yy=lin*8-172 
300 LET yy=-yy 

310 DRAW OVER li INK 6;xx-x,yy-y 
320 IF ATTR (1inl + 1,col 1)=6 OR ATTR (linl + 1, 
co11+1)=6 THEN LET h=-h 
330 IF ATTR (1in2,co12)=6 THEN LET b=-b 
340 PLOT OVER 1; INK 6jx,y: DRAW OVER lixx 
-x,yy-y 

350 IF b=-1 THEN GO SUB 380 
360 IF h=-l THEN GO SUB 400 
370 GO TO 100 

380 FOR x=l TO 10: BEEP .05,x+15: PRINT FLA 
SH 15 PAPER 2! INK 6;AT 1in2,co12 5 “*": NEXT x 
390 PRINT INK 05 PAPER 0;AT lin2,col25" ": 
LET sc=sc+10: LET g=-g:: LET b=-b: RETURN 
400 FOR x — 1 ini TO 20 

410 PRINT AT 1n1,c115" "5 AT lnl+l,cllS" 

420 PRINT FLASH li PAPER 25 INK 6 5 AT linl,c 
olli" “5 AT 1 inl + 1,coll; "D£ a 
430 LET 1ni=lini: LET cll=coll: LET linl=lin 
1 + 1 




166 Heli-Bomber 


440 BEEP .01,x 
450 NEXT x 

460 PRINT AT 1 i n 1 ,co11J " " ; AT 1in + 1,col 1;- 

*: IF ATTR (21,15)=0 THEN GO TO 3000 
470 LET 1 i n 1=0: LET coll=INT <RND*31) 

430 LET h=-h 
490 RETURN 

2499 STOP 

2500 RESTORE : FOR x = USR "a" TO USR u -f"+7 
2510 READ n: POKE x,n 

2520 NEXT x 

2530 DATA 255,165,165,255,165,165,165,255,24, 
126,126,126,60,24,24,255,129,195,165,153,153, 
165,195,129,0,0,195,255,15,7,0,0,128,128,224, 
152,252,248,0,0,195,195,36,24,24,36,195,195 
2540 PRINT AT 0,4;"HELI-BOMBER" 

2600 GO TO 9000 

3000 PRINT INK 5;AT 10,10! "END OF GAME"j AT 1 
2,7;“Your score was "isc: IF sc>hs THEN LET 
hs = sc 

3001 PRINT INK 5jAT 14,9;”High score “;hs 
3005 FOR x=l TO 300: NEXT x 

3010 PRINT AT 16,4;"Press any key to restart" 

3020 IF INKEYS="" THEN GO TO 3020 

3030 LET sc=0 

3040 GO SUB 9000 

3050 GO TO 100 

9000 BORDER 0: PAPER 0: RANDOMIZE : INK 7: CL 
S 

9010 FOR x=0 TO 31 

9020 LET r = INT (RND-X-5) + 1 + 16 

9030 FOR y=r TO 21 

9040 PRINT INK 3;AT y,xj",4" 

9050 NEXT y 
9060 NEXT x 

9070 PRINT INK 6;AT 16,15; “B" 

9080 FOR x=17 TO 21 

9090 PRINT INK 6;AT x,155"C" 

9100 NEXT x 

9200 LET 1in=10: LET col=15: PRINT INK 6;AT 
1in,coli"+" 

9210 LET 1inl=0: LET coll=INT <RND*31): LET 1 
n=1 in: LET cl=col 


Heli-Bomber 167 


9220 PRINT INK 0i PAPER 5!AT linl,colli"-" 

PAPER 0; INK 55 AT 1i n 1 + 1,co115 " DE " 

9225 LET lnl=linl: LET cll=coll 
9230 LET g=i: LET h=i: LET b=l 
9300 RETURN 




168 


Grand Prix 


Grand Prix offers you a race-track, a worthy opponent (in the shape of 
your micro’s car), and as much speed as you can handle. Unlike the 
computer, you have a choice of gears (first or second), and its up to you 
to select the type of course you want to compete on. If you crash you not 
only lose points, but you are replaced on the track in a random position, 
so you’ll have to sort yourself out pretty snappily if you want to get back 
into the running. 

1 REM **GRANDPRIX#* 

2 BORDER 0 : PAPER 0: INK 7: CLS 

5 DIM b*(3,15): DIM i<3): FOR -f = l TO 3: LE 
T b*<*)=«": LET i(f)=0: NEXT i 

6 GO SUB 3000 

7 CLS 

S INPUT "Enter skill (1-good to 4-bad) “is 
k: IF sk <1 OR sk >4 THEN GO TO 8 

9 INPUT "How many laps? “;laps: IF laps<l 
THEN GO TO 9 

10 INPUT "1-Hard Or 2-Easy Circuit? " Jc i : I 
F ciOi AND c i < >2 THEN GO TO 10 
15 GO SUB 9000 

20 PRINT AT 2,17}"READY": BEEP .5,0: PRINT 
AT 2,17}"STEADY": BEEP .5,5: PRINT AT 2,17}" 
GO " : BEEP .2,10: PRINT AT 2,19}" 

70 IF INKEY*="i" THEN LET g=l: BEEP .05,50 
80 IF INKEY*="2" THEN LET g=2: BEEP .05,50 
100 LET po=po+<INKEY*=“7" AND po<151)-<7 AND 
INKEY*="7" AND po=151)-<INKEY*="6" AND po>14 
4)+<7 AND INKEY*="6" AND po=144): IF x<5 THEN 
LET c=1 

105 FOR f=l TO g 

110 LET y=y-(po>144 AND po<148)+(po>148): LE 
T x=»x-(po<146 OR po=l51)+(po >146 AND po<150) 
115 IF SCREEN* (y,x)=" H THEN LET y=yl: LET 
x=xl: BEEP .02,-10: LET po=INT (RND*8)+144 
120 PRINT OVER 1} INK 0}AT yl,xl}CHR* pol} 
OVER l; INK 7}AT y,x}CHR* po 
125 LET yl=y: LET xl=x: LET pol=po 



Grand Prix 169 


130 IF y=11 THEN IF x>27 THEN IF c=l THEN 
BEEP .1,10: LET 11=11+1: PRINT AT 0,10;ll: L 
ET C=0: IF 1l=laps+l THEN GO TO 5000 
140 NEXT -f 

150 LET cy=cy- <cpo>144 AND cpo< 148)+<cpo>148 
); LET cx=cx- (cpo<146 OR cpo=151)+(cpo>146 AN 
D c p □ < 1 50 > 

152 IF SCREENS (cy,cx)=" M THEN BEEP .02,-20 
: LET cy=cyl: LET cx=cxl: LET cpo=cpol 
160 IF SCREENS <cy,cx)="- M THEN READ q: LET 
cpa=cpo+q 

165 IF cy=13 THEN IF cx=30 THEN RESTORE 94 
00 

170 PRINT OVER li INK 0iAT cyl,cxl;CHRS cpo 
l; INK 3! OVER 1iAT cy,cx;CHRS cpo 
175 LET cyl=cy: LET cxl=cx: LET cpol=cpo 
200 IF cy=11 THEN IF cx=30 THEN LET 12=12+ 
l: BEEP .1,15: PRINT AT 0,30;12: IF 12=1aps+1 
THEN GO TO 5000 
500 GO TO 70 

5000 FOR -f = l TO 40: BEEP .01,-f: NEXT i 

5001 CLS 

5002 LET sc=40/ci+60/sk 

5005 IF cy=l1 AND cx=30 THEN LET sc=-sc 
5007 LET sc=sc+<11-12)*2 

5010 IF sc<0 THEN PRINT AT 2,0;"Bad Luck! Yo 
u Were Beaten.“ 

5011 IF sc>0 THEN PRINT AT 2,01"Well Done! Y 
ou Were The Winner." 

5013 PRINT ’"Your Score Is "isc 

5014 IF sc<i(3) THEN GO TO 5050 

5015 PRINT INK 5 j AT 6,05 "Your Score Is Good 
Enough To Be Included In The Top Scores. 
Please Enter Your Name.": INPUT n$! IF LEN nS 
>15 THEN GO TO 5015 

5020 IF sc >i (1) THEN LET i<3J=i<2>: LET 1(2) 
= i<1) : LET i<l)=sc: LET bS(3)=bS(2): LET bS<2 
)=bS<1) : LET bS <1)=nS: GO TO 5050 
5030 IF sc >i (2) THEN LET i(3)-i(2>: LET i(2) 
=sc: LET bS(3)=bS(2): LET b*(2)=nS: GO TO 505 
0 

5040 LET i< 3)=sc: LET bS(3)=n* 

5050 PRINT ’"These Are The Best Scores:": FOR 



170 Grand Prix 


-f = l TO 3: PRINT ’i ; ". . . ) ; TAB 23* i < -f ) : 

NEXT -f 

5060 PRINT ' INK 6’"Press Any Key To Play Aga 
in.PAUSE 0: GO TO 6 

8000 LET a$= *GRAND PRIX - BY PAUL STANLEY - " 
8010 PRINT AT 2,0j“Steer Your Car Around The 
Race- track And Try To Beat A Car Driven 

By The Computer." 

8020 PRINT INK 5’"Turn Left With ""6"" And R 
ight With "“7"". You Can Select Gears Wit 
h l(Slow) And 2<Fast). The Computer Will St 
ay In First At A11 Times." 

8030 PRINT INK 6’”1+ You Crash You Will Rest 
art In A Random Direction, So You Must So 
rt Yourse1 i Out As Fast As Possible." 

8035 PRINT ’"Your Car Is The White One." 

8040 PRINT INK 4’“PRESS ANY KEY TO CONTINUE. 


8050 PRINT PAPER 2; INK 6;AT 0,0;A*;AT 21,0; 
a$: LET A$=a*(2 TO 31)+a$(l): PAUSE 3: IF INK 
EY*="" THEN GO TO 8050 
8060 RETURN 

9000 RESTORE 9005: FOR y=USR "a" TO USR "i"+7 
: READ x: POKE y,x: NEXT y 

9005 DATA 0,110,132,252,252,132,110,0,40,108, 
240,53,223,76,24,8 

9010 DATA 60,90,90,24,90,126,90,0,20,54,15,92 
,251,50,24,16 

9020 DATA 0,118,33,63,63,33,118,0,16,24,50,25 
1,92,15,54,20 

9030 DATA 0,90,126,90,24,90,90,60,8,24,76,223 
,58,240,108,40 

9040 DATA 60,66,189,165,165,189,66,60 
9100 PRINT AT 1,0} INK 4;“ 11111111111111111 

UIIIIIIIII II a 

II III 


IIIIIIIII II 

II II 

iiiiiiii i ii 

9110 PRINT INK 4 ;"I 
I II I 


II I II 
I II II II 

I I 

I III 


III I III 

i ii iiiiii i ii 


i m 
i ii 



Grand Prix 171 


ii i i i i ii min i 

III II" 

9120 PRINT INK 4;“II I II II 

ii ii iii mu ii i 

mu ii ii ii 

ii ii ii 

i ii ii ii mmmmi 

i mmmmi" 

9130 PRINT AT 11,27;" 

9150 IF c i = 1 THEN PRINT INK 4 !AT 3,6}“II";A 
T 4,5i “77"5 AT 8,2;"/";AT 9,2; “II ";AT 17,3;“/" 

;AT I3,3i u / U ;AT 8,18; "1 “;AT 13,28;“J" 

9190 DATA 3,9,3,24,6,5,6,6,7,4,8,4,9,5,9,6,9, 
15,9,16,9,30,11,8,11,18,12,12,13,8,14,30,15,5 
,15,6,15,18,16,4,17,4,17,12,17,20,17,27,18,5, 
18, 11 

9200 DATA 3,8,3,25,6,4,6,5,7,3,8,3,8,30,9,4,9 
,5,9,16,9,17,10,18,12,8,12,13,13,8,13,18,13,3 
0,15,5,15,6,16,4,16,13,17,4,17,22,17,26,18,5, 
18 , 11 

9210 DATA 2,12,2,26,5,3,5,9,6,30,7,1,7,17,7,1 
8,8,19,9,1,10,2,10,7,10,14,12,9,15,9,15,30,16 
,3,16,8,16,14,16,19,17,2,18,2,19,3,19,11,20,2 
3,20,25 

9220 DATA 2,6,2,27,4,2,4,4,5, 1,5,30, 7, 16,7, 18 
,9,20,9,1,9,14,10,2,10,7,13,10,14,10,16,30,16 
, 3 , 16,8,17,14,17,20,18,1,19,1,19,22,19,27,20, 
2 , 20,11 

9290 RESTORE 9180+sk*10 

9300 FOR 1=1 TO 26: READ y,x: PRINT INK 0;AT 
y,x; : NEXT 1 
9350 RESTORE 9400 
9370 LET 1=-1 

9400 DATA 1,1,7,-7,7,1,1,1,-1,-1,-1,-7,7,1,1, 
1 , 1 , 1 , - 1 ,- 1 ,- 1 ,- 1 , 1 , 1 , 1 , 1 
9500 LET po=146: LET cpo=146 

9510 LET y=10: LET x=28: LET cy=y: LET cx=30 

9520 LET yl=y: LET xl=x: LET pol=po 

9522 LET cyl=cy: LET cxl=cx: LET cpol=cpo 

9528 LET 11=1: LET 12=11 

9529 LET g=l: LET c=0 

9530 PRINT AT y,x; OVER 15CHR* po!" '5 INK 35 
CHR$ cpo 


772 Grand Prix 


9540 PRINT AT 0 , 0 ; "YOUR LAPS:";LI;" COMPUTE 
R’S LAPS:-;L2 
9600 RETURN 



173 

Giant Rats 


The object of Giant Rats is to direct a man through a maze to reach the 
girl, whilst being pursued by a killer rat. You have a displayed time limit 
in which to move before the girl mutates - and if you are unlucky she will 
unpredictably change places with the rat! If the rat should reach the girl 
first, she will disappear altogether. At the beginning of the game you are 
shown the positions of up to four randomly placed mines which you must 
try to memorise since they will remain invisible for the remainder of the 
game. 

1 RANDOMIZE : BORDER 0: PAPER 0: INK 7: CL 
S 

5 LET hs=0 
10 GO SUB 9000 
50 GO SUB 5000 
70 LET sc=0 
80 LET 1 i =>5 

100 FOR -f =0 TO 30: PRINT INK A; PAPER 7; AT 
0,-f ; "<S" ; AT 20,-f ; "G“ : NEXT i: FOR -f*=l TO 19: P 
RINT INK 4; PAPER 7;AT -f , 0\ "G ” 5 AT f , 3 0i u G“: 
NEXT i 

103 GO SUB 2000 

107 FOR i=1 TO 30: PRINT AT INT <RND#10)*2,I 
NT (RND*15)*2; PAPER 7J INK 4 5 "6“: NEXT i 

110 LET sc=sc-1: LET y=l: LET x=y: LET -f = 19: 

LET g=29: LET a *=“C U 

115 PRINT AT 21,5;"HI-SC:";hs;AT 21,16;"LI:" 
J 1i5 AT 21,23; "SCORE:0" 

120 LET b$= “713" : LET c = l 

130 GO SUB 1500 

200 FOR i=1 TO 2 

201 LET c=c-1: PRINT AT 21,0;c; M ": IF c=0 T 
HEN GO TO 3500 

205 IF RND>.97 THEN GO SUB 1600 

210 PRINT AT y,x;" " 

220 IF INKEY$="8" THEN IF ATTR (y,x+l)<>60 
THEN LET x=x+l 

230 IF INKEY$= "5" THEN IF ATTR <y,x-l)<>60 
THEN LET x=x-l 



174 Giant Rats 


240 IF I NKEY$=" 7 11 THEN IF ATTR <y-l,x)<>60 
THEN LET y=y-l 

250 IF INKEY$="6 U THEN IF ATTR (y+l,x)<>60 
THEN LET'y=y+1 

255 IF ATTR <y,x)>128 THEN GO SUB 1500 
257 IF (x=b(1) AND y=a(1)) OR (x=b(2) AND y= 
a<2)) OR < x=b < 3) AND y=a(3)) OR <x=b<4) AND y 
=a<4)) THEN GO TO 3000 
260 PRINT INK 6JAT y,x;b*(i): GO SUB 1000 
270 NEXT i 
280 GO TO 200 
1000 LET il=i: LET gl=g 

1010 IF -f < y THEN LET a$="/^": LET -f=-f + .5 

1020 IF -f >y THEN LET a*="£ u : LET -f=-f-.5 

1030 IF g< x THEN LET aLET g=g+.5 

1040 IF g > x THEN LET.a** "C" : LET g=g-.5 

1050 PRINT INK 3 > AT Tl,gl;.AT + , g i a* 

1060 IF ATTR < y, x )=3 THEN GO TO 3100 
1070 PRINT AT INT <RND*10)#2,INT (RND*15)#2! 
PAPER 7; INK 4;‘ , £3 ,, 

1100 RETURN 

1500 LET sc=sc+l: PRINT AT 21,29}sc 

1501 FOR 1=1 TO 5: BEEP .01,1*5: NEXT 1 

1502 LET c=50 

1505 LET q=INT (RND*10)*2+1: LET w=INT (RND*1 
5)*2+1: PRINT PAPER 6j FLASH 1; INK 2;AT q,w 
! 

1510 RETURN 

1600 PRINT AT q,w; u -: LET l=q: LET m=w: LET 
11-T: LET ml=g: LET -f = l: LET g=m: LET q=H- L 
ET w=ml 

1605 PRINT AT q,wi PAPER 6{ INK 2; FLASH 1}"/V 

1606 LET t=l 
1610 RETURN 

2000 DIM a<4): DIM b(4) 

2010 FOR i=1 TO 4: LET a(i)=INT (RND*10)*2+1: 

LET b(i)=INT <RND*15)*2+1: NEXT i 
2020 FOR i=7 TO 0 STEP -1: FOR 1=1 TO 4: PRIN 
T INK i i AT a (.1) , b (1) j »■“ : BEEP . 01 , 1 * 1 : BEEP 
.01,-1*1: NEXT l: NEXT 1 
2030 RETURN 

3000 FOR 1=1 TO 3: FOR 1=7 TO 0 STEP -1: PRIN 


Giant Rats 175 


T AT y,xi INK i5"<4": BEEP .05,1*8: NEXT i: NE 
XT 1 

3010 GO TO 3600 

3100 FOR 1=1 TO 3: FOR i=7 TO 0 STEP -1: PRIN 
T AT y,x J INK iJ "^: BEEP NEXT 1: NE 

XT 1 

3120 GO TO 3600 

3500 FOR 1=1 TO 15: FOR i=l TO 3: BEEP .02,1* 
i: PRINT AT q,wj INK RND*7;"/V": NEXT i: NEXT 
1 

3600 PRINT AT y , x ; “ " J AT i , g i " “ i AT q,wj“ " 

4000 LET li=li-l: IF 1i>0 THEN BEEP .3,0: GO 
TO 110 

4002 CLS : FOR -f=0 TO 20: BEEP .02,-f: NEXT +: 

PRINT ’’“You scored "isci " po i n t 11 5 < " s " AND s 
c < > 1) 5 " . " 

4010 IF sc > hs THEN LET hs=sc: PRINT INK 4’’ 

“WELL DONE! A NEW HIGH-SCORE!": GO SUB 9100 
4015 PRINT INK 5’’"The high-score is "ihs 

4018 PRINT ’ INK 6’ FLASH 15"PRESS ANY KEY TO 
PLAY AGAIN" 

4019 IF INKEY*="" THEN GO TO 4019 

4020 CLS : GO TO 70 

5000 PRINT FLASH 15" CM£U£’T/ C ACNZ? 
T £ 

5010 PRINT FLASH l’“ CRD(\£J£S 

C 

5030 FOR y=0 TO 2 STEP 2: FOR i=0 TO 31 
5035 BEEP .04,RND*40 

5040 IF SCREEN* <y,i)<>"■" AND SCREEN* <y,i)< 
>"" THEN PRINT AT y,i5 BRIGHT 1! INK 25 PAPE 
R 75 SCREEN* (y,i) 

5050 NEXT i: NEXT y 

5055 PRINT ’" @ P a u 1 Stanley" 

5060 PRINT '’"The giant rat is out to get you 
!You must try and reach the girl before she m 
utates (a timer at the bottom o* the screen 
counts this down)." 

5070 PRINT INK 5’’"However she might be a mu 
tant herself and change places with the ra 
t unpredictab 1y. Also she might disappear tot 
ally (i* she meets the rat, she will)." 

5075 PRINT ’’‘Press any key...": PAUSE 0: CLS 


176 Giant Rats 


5080 PRINT INK 6’’"And that’s not all! When 
you start, up to 4 mines will be shown 
in random positions. These positions mus 

t be noted, -for i-f you land on one, you 
will be destroyed!" 

5085 PRINT INK 4’’"Move with 5-8" 

5090 PRINT INK 4; INVERSE 1”“ PRESS ANY 
KEY TO START. ": PAUSE 0: CLS : RETURN 

9000 RESTORE 9010: FOR y=USR "a" TO USR "h"+7 
: READ x: POKE y,x: NEXT y 

9010 DATA 23,93,73,62,8,23,34,65,28,23,3,127, 
8,28, 20,20 

9020 DATA 7,1,33,57,93,255,36,108,240,128,132 
,156,186,255,36,54 

9030 DATA 8,28,62,28,28,63,61,7,15,57,255,124 
,254,84,56,16 

9040 DATA 255,129,189,165,165,189,129,255,28, 

28,73,62,28,62,20,54 

9050 RETURN 

9100 LET g=.3: RESTORE 9200: FOR T=1 TO 23: R 
EAD y,x: BEEP y,x: NEXT -f: RETURN 
9200 DATA g , 7, g, 9, . 6, 7, g, 7, g, 9, . 6,7, g, 12, g , 11 
.S.9,g,7, 1.2,9, g, 11, g, 9, g, 7, g, 5^*4,’g[ 5, ! 6^7, 

9>2,g,5,g,4,g,2, 1.2,0 


177 


Postman 


In Postman you have a limited time in which to collect a letter from a post 
box and deliver it to the house without being caught by the dog. The 
number of post boxes can be varied for each game and letters must be 
collected from the one which is currently flashing. 


1 BORDER 7: PAPER 7: INK 0i CLS 

2 REM @ Postman-Paul Stanley 

5 LET hs=0 

7 GO SUB 9000 
10 GO SUB 5500 
20 GO SUB 7000 
60 GO SUB 5000 
70 BEEP .1,0 
80 FOR i=1 TO 2 

100 IF INKEY*="5" THEN IF X>1 AND ATTR <y,x 
-1)058 AND ATTR (y + 1, x - 1 ) < >58 THEN LET a*= " 
£F a \ LET b*<l)=" G"\ LET b$(2)=“ H* : LET x=x- 
1 

110 IF I NKEY$=" 8 11 THEN IF x<29 AND ATTR (y, 
X+2J058 AND ATTR ( y +1, x +2 ) < >58 THEN LET a$= 
"TIB": LET b$<l)= ,, C”: LET b$<2)="Z7": LET x = x + l 
120 IF INKEY35="7" THEN IF y>l AND ATTR (y-i 
, x)< >58 AND ATTR (y-1,x + 1)< >58 THEN LET a*=" 
7 LET b¥ < 1) = "7 U : LET b$<2> = "/'7 H : LET y>=y-l 
130 IF INKEY«="6" THEN IF y<17 AND ATTR <y + 
2 , x)< >58 AND ATTR <y + 2,x+1)< >58 THEN LET a$= 
“A- LET b*(l)=V" : LET b*(2)=b*<l): LET y=y 
+ 1 

1*40 PRINT AT y 1, x 1 i " " i AT yl + i,xl5" “5 INK 

1;AT y,xja$;AT y+l,x;b«(i): LET yl=y: LET xl 

200 IF let THEN IF x=hx OR x=hx-l THEN IF 
y=hy THEN FOR f = l TO 10: BEEP .01,-f: NEXT il 
LET sc=sc+o: PRINT AT 21,7;sc: GO SUB 5000 
250 IF NOT let THEN IF x=px OR x+l=px THEN 
IF y=py THEN LET let=l: BEEP .06,20: LET sc 
=sc+10: PRINT AT 21,7;sc: LET o=FN a<) 

300 NEXT i 



178 Postman 


500 LET dy=dy+<dy<y+1)-<dy>y+1 ) 

510 IF dx< x THEN LET dx=dx + l: LET d$="/V M 
530 IF dx >x THEN LET dx=dx-l: LET d*="<?** 

580 IF ATTR <dy,dx)=58 OR ATTR (dy,dx)=158 0 
R ATTR (dy,dx)=59 THEN LET u=dx: LET dx=dx+( 
dx<x)-(dx>x): IF dx=u THEN LET dx=dx+l 
800 PRINT INK 3; AT hy,hxi"S‘"; INK 0;AT dyl, 
dxl; u "JAT d y , d x j d S 

810 LET dy1= dy: LET dxl=dx: LET t = t-l: PRINT 
AT 21,27iti" ": IF t=0 THEN GO TO 8000 
850 IF dx = x OR dx = x +1 THEN IF dy=y OR dy = y + 
1 THEN GO SUB 6000 
999 GO TO 80 

5000 PRINT INK 2; AT py, px J "P" ; AT py + 1, px J "tf" 
5003 LET -f = INT <RND*lb)+l 
5005 LET let =0 

5010 PRINT INK 65 PAPER 3; FLASH 1 i AT y(-f),x 
(-f ) ! * P• i AT y <-f ) +1, x <-f ) j "<J“ 

5020 LET py=y(-f): LET px = x(-f) 

5030 LET hx=INT (RND*i4)*2+1: LET hy=INT (RND 
*9)*2+1 

5040 IF ATTR <hy,hx)=58 OR ATTR <hy,hx)=158 T 
HEN GO TO 5030 

5050 PRINT INK 3jAT hy,hx;"S'" 

5100 RETURN 

5500 INPUT "How many post boxes would you 1 
ike there to be? (Any number between 1 and 
36) "jib 

5790 IF 1b<1 OR 1b >36 THEN GO TO 5780 
5800 RETURN 

6000 FOR -f = l TO 12: BEEP .07,-f: PRINT AT y,x; 

INK 1 ; “ AB “SAT y + 1, x | 11 C “ 

6010 BEEP .05, -f: PRINT INK 1;AT y,x5"/ w »AT 
y+1,x; -J- 

6020 BEEP .07,-f: PRINT INK 1J AT y, x j u £F" j AT 
y+ 1,x t“ 6" 

6030 BEEP .05, i: PRINT INK 1JAT y,xi“A “JAT 
y+1,x |“l " 

6040 NEXT -f 

6050 PRINT AT y,xj“ " JAT y+l,x|“ "JAT hy,hx 

. « „ 

6060 LET t=t-50: IF t<=0 THEN GO TO 8000 
6070 PRINT AT 21,27jtj" 



Postman 179 


6060 LET y=17: LET x=28: LET yl=y: LET xl = x 
6090 LET dy=i: LET dx = l: LET dyl=dy: LET dxl= 
dx 

6100 GO TO 60 

7000 FOR + =0 TO 19: PRINT INK 4jAT -f , 05 "/?" i A 
T +,315 "Jf“ : NEXT -f 

7010 FOR -f = l TO 30: PRINT INK 4i AT 0, + 5 u /?" |A 

T 19, -f ; “/?“ : NEXT -f 

7060 DIM y(1b): DIM x(lb) 

7100 FOR f=l TO lb 

7110 LET y=INT (RND*4>*4+3: LET x=INT <RND*9) 
*3 + 3 

7120 IF ATTR <y,x)=58 OR ATTR <y+l,x)*58 THEN 
60 TO 7110 

7125 LET y(+)=y: LET x<+)=x 

7130 PRINT INK 2 5 AT y, x 5 " P“ 5 AT y+ 1, x 5 “<3“ : NE 
XT + 

7800 LET y= 17: LET x=28: LET yl*»y: LET xl = x 
7810 DIM b$(2,2): LET a^“£P": LET b$(l)=" <S “ 

: LET b$<2>=" H" 

7840 LET sc=0! LET t=300: PRINT AT 21,l5 u SCOR 
E: "5 sc 5 AT 21,225 "TIME:"5t 

7850 LET 1et=0: LET py*y(lb): LET px=x(lb) 
7900 LET dy=l: LET dx=l: LET d$="/V” 

7910 LET dyl=dy: LET dxl=dx 

7950 DEF FN a()=INT (SQR <ABS (hy-py)^2+ABS < 
hx-px)~2>) 

7999 RETURN 

8000 FOR + = 1 TO 40: BEEP‘.01, + : NEXT -f 

8005 CLS : PRINT INK 4’ ’"You have run out o+ 
time. “ 

8010 PRINT INK 3’’“You scored "isc5" points. 

8020 IF sc > hs THEN LET hs=sc: PRINT INK 2’’ 
“Well done that’s a new high score!! Pie 

ase ENTER your name.": INPUT h$: 60 TO 8 

035 

8030 PRINT INK 2’’"The high-score is "5hsi“ 
points"’"by Postman “5h$ 

8035 FOR f=l TO 50: NEXT i 

8040 PRINT INK 5’’“Press any key to play aga 
in...” 

8050 IF INKEY*="" 


THEN 60 TO 8050 



180 Postman 


8060 CLS : GO TO 10 

9000 RESTORE 9010: FOR -f=USR "a" TO USR "s"+7 
: READ g: POKE -f , g: NEXT -f 

9010 DATA 120,126,236,231,255,255,124,56,0,0, 
0,254,255,254,0,0 

9020 DATA 56,127,184,184,40,72,136,76,56,254, 
185,56,40,37,34,48 

9030 DATA 0,0,0,127,255,127,0,0,30,126,55,231 
,255,255,62,28 

9040 DATA 28,127,157,28,20,164,68,12,28,254,2 
9,29,20,18,17,50 

9050 DATA 16,56,56,56,56,56,56,56,124,254,124 
,56,126,184,40,32 

9060 DATA 28,62,91,73,62,62,93,157,28,28,28,2 

8 , 8 , 0 , 0,0 

9070 DATA 124,254,124,56,252,58,40,8,8,14,139 
,142,252,124,68,68 

9080 DATA 32,112,209,113,63,62,34,34,60,126,2 
55,126,66,126,126,126,102,102,102,126,126, 126 
,126,255 

9090 DATA 126,195,189,165,165,189,195,126,32, 
126,255,126,86,86,126,126 

9200 PRINT INK 2j ” AB POSTMAN 

£f m ' u c H” 

9250 PRINT •" @ Paul Stanley” 

9300 PRINT INK 1* ’"First collect a letter -fr 
om the -flashing post-box. Then deliver it to 
the little purple house." 

9400 PRINT ’’"You have limited time, and if 
you are attacked by the dog, you will los 

e time." 

9500 PRINT INK 3’ ’"Move with 5-8." 

9600 PRINT ’’"Press any key to start....." 
9700 IF INKEY*=”” THEN BEEP .01,20: PAUSE 10 
: GO TO 9700 
9999 CLS : RETURN 




181 


Xmas Eve 


Xmas Eve is a race against time for Santa, who must rush to deliver 
presents before the inhabitants of the houses awake. 

By manoeuvering Santa’s sleigh left and right you can catch the presents 
as they are thrown down from above by the elves. Presents can then be 
dropped down the chimneys by pressing the M key. Each time a present 
is successfully delivered, the inhabitants of the house awake and switch 
on the lights, which causes the snow on the roof to melt at a rate 
proportional to the activity in the house. The more work Santa does the 
more he has to hurry, in order to complete his work without being seen. 

1 PAPER 1: INK 7: BORDER 1: CLS 

2 REM ******************** 

3 REM ** S PAUL STANLEY ** 

A REM ******************** 

5 GO SUB 8000 

7 LET hs=0 

10 GO SUB 9000 

15 LET sk=.98: LET s=0 

20 LET a*= "A n : LET b*="£": LET c*="C u l LET 
x=27 

21 DIM d*<28) 

25 LET 9=1: LET h=INT <RND*28)+2 

26 PRINT AT 0,18;"HIGH-SCORE:"Jhs 

27 LET p=0 

28 PRINT AT 0,0; “PRESENTS: M ;s 

30 IF INKEY*= u x" THEN LET x = x+(2 AND x<27) 

: LET a*="D": LET b*=“r": LET 

35 IF INKEY*="z" THEN LET x=x-<2 AND x>l): 

LET a*= H 4": LET b$= ,, £" : LET c*= H C" 

40 PRINT AT 10,x-2»" ”jAT 10,X5 INK 2 

;a*; INK 0;b*; INK 2;c*; 

50 IF NOT p THEN LET 9=9+1: PRINT AT g-l,h 
5“ •|AT 9,h; INK 6}“6": IF g=10 THEN IF h=x+ 
2 OR h=x+l OR h=x THEN LET p-1 

60 IF g=12 THEN IF SCREEN* (g+1,h)*":" THE 
N GO TO 1000 

65 IF g=12 THEN PRINT AT 12,h5 ” ": LET g=l 



182 Xmas Eve 


: LET h=»INT <RND*28)+2 

70 IF p THEN IF INKEY*="m" THEN LET g= 10 : 
LET h=x-l+ (a*="D “)+(3 AND c*="C"): LET p=0 
80 IF RND >sk THEN LET q=INT <RND*7>+1: LET 
e=INT <RND*4): PRINT PAPER 3;AT 16,q*4-e+l; 
LET d*<q*4-e)="p": IF d*(q*4-3 TO q*4)=" 
PPPP" THEN GO TO 2000 
90 GO TO 30 
1000 PRINT AT 12, h; 11 " 

1010 IF SCREEN* <18,h)*"_“ THEN GO TO 25 
1015 LET s=s+1: PRINT AT 0,0PRESENTS:";s 
1020 PRINT AT 18,hj INK 0J PAPER 6 ;" »;AT 19 

, h J “_“ 

1022 FOR -f = l TO 3: BEEP .001,30: NEXT -f 
1025 FOR i =4 TO 28 STEP 4: IF SCREEN* (18,f)- 
THEN NEXT -f: LET sk=sk-.02: CLS : GO SUB 
9030: GO TO 20 
1030 GO TO 25 

2000 IF SCREEN* <18,q*4)<>“_" THEN GO TO 600 


2010 GO TO 30 

5000 RESTORE 5100: LET z=.3: LET c«. 6 : FOR f« 

1 TO 26: READ a,b: BEEP a,b: NEXT -f 

5100 DATA Z|6 jZj6jCj6jZj6|Zj6jCj6 z 6 z 9 z 2 

,z,4,l,6,z,6,z,7,z,7,z,7,z,7,z,7,z,6,z,6,z,6, 

z,9,z,9,z,7,z,4,c,2,c,2 

5200 RETURN 

6000 FOR f =10 TO 1 STEP -.5: PRINT AT i,x} IN 
K 2;a*; INK 0Jb*J INK 2;c*5 AT f + 1 ,x 5 " “ ; BE 

EP .005,2*-f: NEXT -f 
6002 IF s > h 5 THEN LET hs = s 

6005 PRINT AT 1,x;" 

6006 PRINT AT g,h;“ • 


6010 PRINT FLASH 1jAT 18,q*4-lj INK 0 ; PAPER 

6 !*_"I AT 19,q*4-l; "A_“ 

6030 PRINT AT 8,85 FLASH 15"G A M E 0 V E R" 
6045 GO SUB 5000 

6050 PRINT AT 11,2; FLASH 15"PRESS ANY KEY TO 
PLAY AGAIN" 


6060 IF INKEY*<>“" THEN CLS : GO TO 10 
6070 GO TO 6060 

8000 PRINT INVERSE 1;AT 5,0;" CHRIST 
MAS EVE INVERSE 0 ’’" @ p M 




Xmas Eve 183 


L STANLEY": PAUSE 250: CLS 

8010 PRINT ’"It is approaching midnight on 
Christmas eve and Santa is late.YDU play the 
part o-f Santa and you must deliver presents 
which are thrown down to you by your elves. 
Having caught a present (by -flying directly 
below it) you must move over a chimney a 

nd drop a present down it." 

8020 PRINT ’"When a present-has been dropped 
down a chimney the -family in that house im 

mediately start work on opening up the pre 

sent and they will turn the light on.Droppin 
g another present down a chimney o-f a lit h 
ouse will not count." 

8030 PRINT ’ INVERSE 15"PRESS ANY KEY TO SEE 
MORE.": PAUSE 0 

8040 CLS : PRINT "Beneath each roof you will 
see a patch o-f snow which melts as time ela 
pses. This melts at a rate which is proport 
ional to the activity in the house." 

8050 PRINT ’"As the presents must be placed 
down the chimneys before anyone sees you, i-f 
all the snow has melted under a particular 
roof without a present being dropped before 
this occurs it will indicate that the in 

habitants are awake and you will have to r 
eturn immediately." 

8060 PRINT ’ “ Z-LEFT 

X-RIGHT M- 

--DROP PRESENT" 

8070 PRINT ’ INVERSE 15" PRESS ANY KEY TO 

START ": PAUSE 0: CLS : RETURN 

9000 RESTORE 9010: FOR y=USR "a" TO USR "k"+7 
: READ x: POKE y,x: NEXT y 
9010 DATA 0,0,1,0,0,0,0,0 ' 

9020 DATA 192,64,160,224,127,126,99,82 
9030 DATA 8,28,8,124,156,72,63,128 
9040 DATA 16,56,16,62,56,18,252,1 
9050 DATA 3,2,5,7,254,126,198,74 
9060 DATA 0,0,128,0,0,0,0,0 
9070 DATA 0,0,0,54,54,0,54,54 
9080 DATA 0,1,3,7,15,31,63,127 
9090 DATA 0,128,192,224,240,248,252,254 





184 Xmas Eve 


9100 DATA 255,220,73,65,64,0,0,0 

9110 DATA 24,60,BIN 01010110,60,24,126,255,25 

5 

9300 FOR x = 2 TO 26 STEP 4 

9310 PRINT INK 3;AT 13,x+lJ":"i PAPER 3j INK 
5 ! AT 14, x + 1 ; “/V u i PAPER 15"7 M ;AT 15, x ; " HWMI “ l 
INK 7j PAPER 3|AT 16,x;;AT 17,x; PAPER 
l; INK 3; ; AT 18,xj"B 1";AT lP.x;''! ■ 

“I AT 20,x;"■■■■"iAT 21,xi" ■■■■ “ 

9320 NEXT x 

9400 FOR x=48 TO 208 STEP 32: OVER 1: INK 3: 
PLOT x,0: DRAW 0,39: NEXT x: INK 7: OVER 0 
9450 FOR x=24 TO 216 STEP 32: PLOT x,23: DRAW 
15,0: NEXT x 
9500 RETURN 




185 


Morse Tutor 


This has to be the definitive Morse code tutor. It’s got everything you 
could possible require to painlessly acquaint yourself with the code, and 
then to go on and practice until you reach professional speeds. The 
program offers you a comprehensive menu with a full listing of letters 
and numbers (in both text and Morse), a facility to convert your own 
messages into the code and a challenging tester section. You also have 
the opportunity to adjust the speed of the code to suit your own abilities. 
What more could you ask for? 

10 POKE 23658,255: REM -force upper case inp 
ut 

20 REM Morse Tutor <3 Robert Erskine 1983 
40 GO SUB 8500 

100 PAFER l: INK 5: BORDER 1: CLS 
110 PRINT AT 1,11;"OPTIONS" 

120 PRINT 

140 PRINT "1 Print a message": PRINT 

150 PRINT "2 Message with sound only": PRINT 

160 PRINT "3 Create your own message": PRINT 

170 PRINT “4 Test section": PRINT 
180 PRINT "5 Change speed": PRINT 
190 PRINT "6 The Morse Code": PRINT 
210 IF INKEY$="1" THEN GO TO 2005 

220 IF INKEY$= 11 2" THEN GO TO 2000 

230 IF INKEY$=”3" THEN GO TO 2030 

240 IF INKEY$="4" THEN GO TO 5000 

250 IF INKEY*="5" THEN GO TO 6000 

260 IF INKEY*="6" THEN GO TO 7000 

290 GO TO 210 

1000 LET x$=v$: LET v$=q*+v$+h$ 

1010 FOR x = l TO LEN v*-32 

1020 IF 0=0 THEN PRINT AT 21,0;v*(x TO x+31) 
1025 LET T=C0DE v*(x+31) 

1030 FOR y= 1 TO 5 

1040 IF T>64 THEN BEEP ciCODE <v*(x + 31) )-64„ 
y) ,25 



186 Morse Tutor 


1042 IF T<58 AND T>47 THEN BEEP c(CODE < v* < x 
+31))-21,y),25 

1045 NEXT y 

1046 PAUSE 3 
1050 NEXT x 

1999 GO Tb 2110 

2000 LET 0=1 
2005 LET v*=-f$ 

2010 GO TO 1000 
2020 GO TO 100 

2030 CLS : PRINT AT 2,7;"CREATE A MESSAGE” 
2040 PRINT “Enter your own message at the 
bottom o-f the screen and then "("press the EN 
TER key. 11 
2050 INPUT v* 

2060 CLS : PRINT "Do you want the message dis 
played in both sound and ‘vision? (V or N)" 
2065 PAUSE 100 

2070 IF INKEY$="” THEN GO TO 2070 

2080 IF INKEY$=”Y" THEN GO TO 2100 

2090 LET 0=1 

2100 GO TO 1000 

2110 LET 0=0 

2140 LET f*=x$ 

2150 GO TO 100 

5000 CLS : PRINT AT 1,10;"TEST SECTION” 

5010 PRINT 

5020 INPUT “Do you want to be tested on chara 
cters (1) code (2) or sound (3)?”;A$ 

5030 IF A*="l” THEN LET W=1 
5040 IF A$=”2" THEN LET W=2 
5050 IF A$="3" THEN LET W=3 

5055 IF CODE A3K49 OR CODE A*>51 THEN GO TO 
5020 

5060 INPUT "Do you want testing on letters (1 
) or numbers <2)?";A* 

5090 IF AS="1" THEN LET B=1 
5100 IF A$=“2" THEN LET B=2 

5105 IF CODE A$<49 OR CODE A*>50 THEN GO TO 
5060 

5110 IF W>1 THEN GO TO 5250 
5115 PAUSE 50 

5120 PRINT "The character will appear first, 


Morse Tutor 187 


■followed shortly by the code and sound": PAUS 
E 100 

5130 FOR x = l TO 15 

51*40 IF B= 1 THEN LET v=INT <RND*26>+1 

5150 IF B=2 THEN LET v=(INT (RND*10)+1)+26 

5160 IF B=1 THEN PRINT CHR* (v+64)5 

5170 IF B=2 THEN PRINT CHR* <V+21)J 

5180 PAUSE 50 

5190 FOR y=l TO 5 

5200 BEEP c<v, y),25 

5210 NEXT y 

5220 PRINT “ = "5 c*(v) 

5230 NEXT x 

5240 PAUSE 50: 60 TO 100 
5250 IF W>2 THEN GO TO 5390 

5260 PRINT “The code will appear first, folio 
wed shortly by the character and sound”: PAUS 
E 100 

5270 FOR x=l TO 15 

5280 IF B=1 THEN LET v=INT <RND#26)+1 

5290 IF B=2 THEN LET v=(INT <RND*10)+1)+26 

5300 PRINT c*(v)i: PAUSE 50 

5310 FOR y=l TO 5 

5320 BEEP c <v,y) ,25 

5330 NEXT y 

5340 PRINT “ = "! 

5350 IF B=1 THEN PRINT CHR* <v+64) 

5360 IF B=2 THEN PRINT CHR* (v+21) 

5370 NEXT x 

5380 PAUSE 50: GO TO 100 

5390 PRINT “The sound will be heard first, fo 
1 lowed shortly by the character and code": PA 
USE 100 

5400 FOR x-1 TO 15 

5410 IF B= 1 THEN LET v=INT (RND*26) +1 

5420 IF B=2 THEN LET v=(INT (RND*10)+1)+26 

5430 FOR y=l TO 5 

5440 BEEP c < v,y) ,25 

5450 NEXT y 

5460 PAUSE 50 

5470 PRINT “That was "i 

5480 IF B=1 THEN PRINT CHR* (v+64)5" = "5c*( 




188 Morse Tutor 


5490 IF B=2 THEN PRINT CHR* <v+21)5" = “ 5 c$ ( 
v) , 

5500 PAUSE 50 
5510 NEXT x 

5520 PAUSE 50: GO TO 100 

6000 CLS : PRINT AT 1,6;".ALTER SPEED OF CODE" 
: PRINT 

6010 PRINT "Enter a multiplication -factor to 
alter the speed o-f the morse. V a lues less th 
an 1 will increase the speed" 

6020 INPUT A 

6030 IF A>9 THEN GO TO 6020 

6040 PRINT "Please wait": LET s=s*A: LET 1=1* 
A: GO SUB 9000 
6050 GO TO 100 

7000 CLS : PRINT AT 0,7;"THE MORSE CODE": PRI 
NT 

7010 FOR X=i TO 36 

7020 IF X< 27 THEN PRINT CHR$ (X + 64);" = ";C* 
(X) , 

7030 IF X >26 THEN PRINT CHR$ <X + 21)5“ = "!CS 
(X) , 

7040 NEXT X 

7050 PRINT : PRINT AT 21,0;"PRESS ANY KEY TO 
RETURN" 

7060 PAUSE 0 
7070 GO TO 100 

8500 LET s=.1: LET 1=.3: LET 0=0: LET x$="“ 
8510 LET -f*="THIS IS A MESSAGE TO DEMONSTRATE 
THE MORSE CODE TUTOR THE COMPLETE ALPHABE 
T IS AS FOLLOWS ABCDEFGHIJKLMNOPQRSTUVW 

XY2 AND THE NUMBERS ARE 1234567890 

8520 LET q*=" 

8530 LET h*=" " 

9000 RESTORE : DIM c<36,5) 

9010 FOR x =1 TO 36 
9020 FOR y=l TO 5 
9030 READ c <x,y) 

9040 NEXT y 
9050 NEXT x 

9060 DATA s,1,0,0,0, 1 ,s,s,s,0, 1 ,s,1,s,0,1,s,s 
,0,0,S,0,0,0,0,5,S,1,S,0,1,1,S,0,0,S,S,S,S,0, 



Morse Tutor 189 


s,s,0,0,0,s,1,1,1,0,1,s,1,0,0,s,1,5,5,0,l,1,0 
,0,0,l,s,0,0,0,1,1,1,0,0,s,1,l,s,0,1,l,s,1,0, 
5,1,S,0,0,S,S,S,0,0,1,0,0,0,0,5,5,1,0,0,5,5,5 
,1,0,S,1,1,0,0,1,5,5,1,0,1,S,1,1,0,1,1,5,5,0 
9070 DATA 1, 1, 1, 1, 1,s, 1, 1, 1 , 1 ,s,s, 1, 1, 1,s,s,s 
, 1, 1,5,5,5,5, 1,5,5,5,5,5, 1,5,5,5,5, 1, 1,5,S,S, 
1 , 1 , 1 , S, S, 1,1, 1,1,5 
9080 DIM c*<36,9) 

9090 FOR x = l TO 36 
9100 READ c$(x> 



9120 NEXT x 
9130 RETURN 










190 


Flying Geese 


It’s time to don your tweeds, grease up your shotgun and head for the 
marshes. The geese are back from the north and the freezer is empty. 

Don’t worry about the corpses - your faithful hound will deal with those 
after the game is over. Just blast away with your shooter and notch up a 
handsome tally. 

10 REM ** FLYING GEESE @19 

83 MICHAEL BEWS 

20 GO TO 580 

25 REM **FLYING/SHOOT ROUTINE 

30 FOR x=o TO -fr: LET d (x) =ei -x+SGN <o-tw*I 
NT (RND*tw)l: PRINT AT h<x),g<x)-o;" “;: FOR 

z=o TO -fr: LET i = -i: PRINT AT d < x) , g (x ) ; " 
a$(th-f) ; : NEXT z 

40 IF PEEK 23556=65 THEN FOR y=o TO tw: PL 
OT OVER ojen,tf! DRAW OVER o;-fr,th: PRINT 
OVER a; AT si, th; -£”■,: NEXT y: LET SH=SH + o: PR 
INT INVERSE o;AT 0,sx;SH;: IF g(x)=ev OR g(x 
)=tv THEN LET B=B + o: PRINT AT d<x),g(x) 5 “ 

“i INVERSE o;AT 0,hy|Bi: LET g<x)=o-tw: LET h 
<x)=o: FOR y=d(x) TO ni STEP tw: PRINT AT y-t 
"iAT y - o, -f o ; 11 i AT y, -f o; "F" 5 AT y + o.-fo; 

“6"i: NEXT y: PRINT AT ni-o,*o;“ * 5 AT 

“iAT ni+Oj-fo; " " ; 

50 LET h(x)=d(x): LET g(x)=g(x)+tw: IF gtx) 
>tn THEN PRINT AT h ( x ) , g (x ) -o J " '■ ; : LET gtx 
) =o 

60 NEXT X: IF SH>99 THEN GO TO 300 

70 GO TO 30 

100 FOR x=l TO 4: LET h<x)=i: LET g(x)=x*5-4 
: NEXT x 

110 CLS : PRINT INVERSE 0;AT 0,0;"SHOTS: 
iAT 0,10; PAPER 7) INK 2i“<A> TO FIRE “ ; INK 
7; PAPER 1;AT 0,24;"SCORE: "; INK 4;AT 13,21 

i“£££“iAT 14,20; “£££££" ; AT 15, 19; “£££££££“ ; AT 
16, 19; "£££££££« iAT 1 7, 1 9 ; "^1" ; PAPER 2; INK 
<di"D“i PAPER l; INK 4i"M££"i PAPER 2; INK 0; 
AT IS,22; “D"iAT 19,22; "D“i 
120 PRINT AT 20,0; PAPER 4;" «; p 




Flying Geese 191 


APER l;“ "; paper 4;" 

“i INK 5i PAPER 1; “DDDDDDDD "5 PAPER 4; 

130 PRINT AT 18, 1 } "M" 5 AT 19,1;"/V“ 5 
140 GO TO 30 

299 REM ***END OF GAME ROUTINE 

300 IF B >TOT THEN LET TOT = B 

310 PRINT FLASH 1 i AT 9,10;“ GAME OVER '* i FL 
ASH 0! INVERSE 1(AT 11,45“ SCORE:“5B5“ IN 100 
SHOTS “J 

320 PRINT AT 13,4; INVERSE 15"HIGHEST SCORE: 

" 5 TOT! 

330 INPUT FLASH 1| "PRESS < ENTER > FOR NEXT G 
AME" ;x*: LET SH=0: LET B=0: GO TO 100 
570 REM **INITIALISATION*** 

580 PAPER l: INK 7: BORDER 6: CLS 

590 DIM a*(4,2): DIM d(4): DIM g<4): DIM h(4 

) 

600 LET sx=6: LET hy=30: LET TOT=0: LET SH=0 
: LET -f i = 15: LET tv=12: LET ev=ll! LET ni = 19: 

LET ty=20: LET en=18: LET t-f=34: LET si = 16: 
LET -fo=14: LET ei=8: LET -f = -l: LET Q=l: LET t 
w=2: LET th = 3: LET -fr=4: LET tn=29 
610 FOR'x=0 TO 7: READ a,b,c: POKE USR “A "+ x 
, a: POKE USR “tf“+x,b: POKE USR "C"+x,c: NEXT 

620 LET a$(4) ="AB”: LET a*<2 )= U CB“ 

630 FOR X=0 TO 7: READ a,b: POKE USR “/9"+x,a 
: POKE USR “ /V" + x , b : NEXT x 
640 FOR x=0 TO 7: READ a: POKE USR “D" +x,a: 
NEXT x 

650 FOR x=0 TO 7: READ a: POKE USR "if + x.a: 
NEXT x 

660 FOR x=0 TO 7: READ a,b: POKE USR ,, A“+x,a 
: POKE USR “<S" +x , b : NEXT x 
690 GO TO 100 

999 REM **U.D. GRAPHICS DATA 
1000 DATA 2,0,0,6,0,0,7,48,0,7,104,0,127,254, 
127,31,192,31,8,0,15,0,0,3 

1010 DATA 1,224,98,224,244,144,232,144,88,144 

,232,144,248,144,224,216 

1020 DATA 85,170,85,170,85,170,85,170 

1030 DATA 66,16,132,33,4,81,4,160 

1040 DATA 0,48,16,56,18,28,54,20,118,24,62,16 
,60,16,60,0 



192 


Wordsum 


A test of your logical thought processes, this program presents you with 
a sum to solve. Not so difficult you might think, but in this case some of 
the numbers have been replaced by letters, and the answer you want is 
not a number, but the word that the numbers spell! The program gives 
you a different set of number/letter substitutions for each problem, and 
the answer is always to be found if you follow the arithmetic through. 

5 BORDER 6: PAPER 5: INK 1 
10 REM **W 0 R D S U M** @19 

83 BY MICHAEL BEWS 

20 CLS : PRINT PAPER 7; INK i;"W 0 R D S U 
M @1983 MICHAEL BEWS" ,'AT 11, 12; "STANDBY" 

35 REM ****READ WORD LIST*** 

40 DIM A(10): DIM C(10): DIM A«(10): DIM W* 
(60,6) 

45 LET B*=“ 

50 LET N=i 

60 READ W*(N): IF W«(N)<1)="!" THEN LET N= 
N-l: GO TO 80 

70 LET N=N+1: GO TO 60 

80 BORDER 6: PAPER 5: INK 1: LET T=0: LET N 
N=1+INT <N*RND): LET X=6: IF W*<NN) <6)=" " TH 
EN LET X=5 

82 LET F$=W*(NN>( TO X) 

83 BEEP .1,10 

85 REM *****GET RANDON LETTER VALUES 

86 CLS : PRINT INK 7; PAPER 1 5 *' W O R D S U 
M @1983 MICHAEL BEWS"; 

90 FOR X=1 TO LEN P$ 

100 LET A* < X) =P$( X) 

110 IF X=1 THEN GO TO 140 

120 FOR 2=1 TO X-l: IF A$<X)=A*(Z) THEN LET 
A(X)=A(Z): GO TO 190 
130 NEXT Z 

140 LET A(X)=INT <RND*10) 

150 IF All)=0 THEN GO TO 140 
160 IF X=1 THEN GO TO 190 

170 FOR Y=1 TO X-l: IF A(X)=A(Y) THEN GO TO 
140 


Wordsum 193 


180 NEXT Y 
190 NEXT X 
200 LET P-0 

205 FOR X=6 TO 13: PRINT AT X,9; PAPER 6;BS; 

: NEXT X 
207 PAPER 6 

210 FOR X=LEN PS TO 1 STEP -1 
220 LET T = T + A<X)*10-'P 
230 LET P=P+1 
240 NEXT X 

250 LET S=9*<1000+INT <RND*9000)) 

260 LET I=T-S 

270 LET SS=STRS S: LET TS=STRS T: LET IS=STR 
$ I 

280 FOR X=1 TO LEN TS 
300 FOR Y=1 TO LEN IS 

320 IF IS < Y)=TS(X) THEN LET C(X)=1: LET IS< 
Y)=AS(X) 

340 NEXT Y 
350 NEXT X 

360 FOR X=1 TO LEN (T$) 

380 FOR Y=1 TO LEN (SS) 

400 1^ SS <Y)=TS(X) THEN LET C(X)=1: LET SS< 
Y)=AS(X) 

420 NEXT Y 
430 NEXT X 

440 FOR X=1 TO LEN TS 

450 IF C<X)=0 THEN LET TS(X)=AS(X) 

460 NEXT X 

490 REM **PRINT SUM ON SCREEN** 

495 INK 1 

500 PRINT AT 7,22-2*LEN IS;: FOR X=1 TO LEN 

is: beep . i , x: print is(X); u next x 

510 PRINT AT 9,22-2*LEN SS;: FOR X=1 TO LEN 
ss: BEEP .i,x+6: PRINT sstx); H ";: next x 

520 PRINT AT 10,9; "_" 

530 PRINT AT 12,22-2*LEN TS;: FOR X=1 TO LEN 

TS: BEEP .1,X+l1: PRINT ... NEXT X 

540 PRINT AT 18,0; INVERSE 1;"PRESS <SPACE> 
TO REVEAL THE WORD"; INVERSE 0 
550 LET XS=INKEYS: IF XS="" THEN GO TO 550 
560 IF XS<>“ " THEN GO TO 550 
565 BEEP .1,40: PRINT AT 7,6-LEN ISiSTRS I;A 
T 9,6-LEN SS;STRS S;AT 10,0;"_"!AT 12,6 


194 Wordsum 


-LEN T*;STR* T 

570 PRINT AT 12,22-2*LEN T$; : FOR X=1 TO LEN 

tsp: beep . i,18+x: print a$(X)5" next x 

580 PRINT AT 18,0j FLASH 1J M PRESS <1> FOR 
ANOTHER WORDSUM “i FLASH 0 

585 LET B=PEEK 23556: IF B<>49 THEN GO TO 5 
85 

586 DIM C(6): GO TO 80 

590 DATA "HEARTH” , “YELLOW" , "ENGINE" , "RABBIT 1 * 
,"CARPET","CLEVER","FEASTS","SHADES","POTATO" 
,"RADIOS","THAMES",“CARROT","TOMATO","CHEESE" 

,■BUTTER",-RUDDER","HEATER“,"PLINTH","FARMER" 

,“TROPHY" 

600 DATA “CHERRY","HAPPEN","COFFEE","TEAPOT" 

,"MOTHER","SISTER","HOUSES","CABINS","ISLAND" 

,"PIRATE","SILVER","JEWELS",“BOUNTY","TOWELS" 

, "PLANES" , "PLANTS'*, "HOCKEY" , "TENNIS" 

610 DATA "COSTLY","LEMONS","APPLES","ORANGE" 

,"VIOLET","ROBBER","RATHER","POINTS","PAINTS" 

,"TANDEM","LETTER","LITTER","LATTER",“FASTER" 

,“MASTER","MISTER" 

620 DATA "!" 

3000 LET A=INT (RND*10): PRINT A;“ GO TO 

3000 


195 

Asset Stripper ( 48 k> 


This is an investment simulation in which you compete with the 
computer’s company, Spectral Investments, to acquire £1 million. 

Starting with £100,000 you must study market intelligence reports and 
buy and sell shares on the stock market. If you find a company which is 
rich in capital assets but running at a loss, you can make a bid for the 
company with a mind to distributing its assets amongst the shareholders. 
To make a takeover bid you must attempt to buy 51 per cent of the 
shares, at which point the opposition will start bidding against you. 
Occasionally, Spectral will initiate its own takeover bids. The longer the 
bidding continues, the greater the possibility that a ‘third party’ will 
intervene. 

Ordinary shares may be bought and sold in any quantity and a regular 
review of share prices is given, together with a market ‘wire service’. If 
you want to look more closely at the performance of a particular 
company, you have the option of calling up a copy of its annual report 
which will give you information on assets, share prices, profits and other 
useful data. During each round, all the companies manufacture and 
trade their produce, and it is this activity which determines profitability. 
Frequently a company will invest in new capital equipment and this 
expenditure will cause a small drop in the share price. Don’t be too hasty 
to sell your shares when a rise in productivity might just be around the 
corner. 

10 BORDER l: PAPER 1: INK 7t CLS 
20 PRINT AT 0,9 j “ASSET STRIPPER": PRINT AT 
2,7;"0 R. Erskine 1982";AT 4,5;"What is your 
surname?“ 

30 INPUT n* 

50 PRINT AT 5,4;"Enter difficulty level ";A 
T 6,11 5 "(1,2 or3)" 

60 INPUT lev 

70 PRINT AT 7,10;"Please wait" 

80 RANDOMIZE 
90 GO TO 3260 

100 PRINT TAB (11)i"ACCOUNTS" 

140 PRINT 

150 PRINT n*;e$ 



196 Asset Stripper 


160 PRINT 

170 PRINT "Liquid assets ","£";INT (<ch+.005 
)* 100)/100 
1S0 PRINT 

190 LET q=0: LET ql = q 
200 FOR x=l TO 10 
210 LET q=q+e ( x ) 

220 IF ■f$<x)= M c" THEN 60 TO 240 
230 LET ql=qi+<e<x)*d<x)) 

240 NEXT x 

250 PRINT "Shares held ",INT q 
260 PRINT 

270 PRINT “Total share value £";INT <{ql++.0 
05)*100)/100 
280 PRINT 

290 PRINT "Total assets","£";INT <<ql+ch+.00 
5 )* 100)/100 
300 PRINT * 

310 IF ql + ch >s THEN 60 TO 2720 
320 IF ql+ch<0 THEN 60 TO 2760 
330 LET q3=0 
340 FOR x=l TO 10 

345 IF -f $ ( x ) = “ c " THEN 60 TO 355 
350 LET q3=q3+(£<x)*d(x)) 

355 NEXT x 

360 IF q3+zxch >s THEN 60 TO 2760 
370 IF q3+zxch<0 THEN 60 TO 2720 
380 IF t$="x" AND ch+ql>zxch+q3 THEN 60 TO 
2720 

390 IF t*= ,, x , ‘ AND ch + ql<zxch + q3 THEN 60 TO 
2760 

410 PRINT m$i" Claims assets ai £"}q3+zxch 
420 PRINT 
450 RETURN 

480 PRINT TAB (10);"WIRE SERVICE" 

490 LET q=0: LET ql=0 
510 LET m <1)=asa 
520 FOR x=l TO 10 

530 IF -f$(x)="c" THEN PRINT c$(x) , "Ceased t 
rading" 

540 IF -f*(x) = ,, c" THEN 60 TO 680 
550 PRINT 
560 LET q=q+l 

570 IF b ( x ) >a ( x ) AND e(x)<510000 AND -f(x)<51 



Asset Stripper 197 


0000 THEN PRINT c$(x),"May be ripe Tor taken 
ver “ 

580 PRINT 

590 IF g < x ) < 1 AND wlxl >59 THEN PRINT c*<x>, 
"Pro-fits low” 

600 PRINT 

610 IF w ( x ) < 60 THEN PRINT c$ ( x ), "Heads -for 
troub1e” 

620 PRINT 

630 IF g < x) >5 THEN PRINT c$(x) , "Set -for goo 
d pro-f i ts “ 

640 PRINT 

650 IF v<x)>0 AND v(x)>=l THEN PRINT cSix), 
“Announces " ; INT v(x)5" Redundancies” 

660 PRINT 

670 LET ql=ql+d<x) 

675 PAUSE 100 
680 NEXT x 

690 IF q=0 THEN LET t*=“x" 

700 IF q=0 THEN GO TO 110 
710 LET asa=ql/q 

720 PRINT "All share average "; INT <<asa+.00 
5)#100)/100 

730 IF asa>m(1) THEN PRINT "up "5INT <<<asa 
-m(1))+. 005 ) #100) / 100 

740 IF asa<m(1) THEN PRINT "down "JINT < < <m 
(1)-asa)+.005)#100)/100 
750 IF asa>i<2) THEN PRINT “All time high” 
760 IF asa)i(2) THEN LET i<2)=asa 
770 IF asa<i(3) THEN PRINT "All time low” 
780 IF asa<i(3) THEN LET i(3)=asa 
810 RETURN 
840 FOR x=l TO 10 

850 IF ■f*<x)=”c" THEN GO TO 1010 
860 IF 1ev=1 OR lev=2 THEN GO TO 880 
870 IF -f$(x)="x" AND -f(x)>0 AND -f(x)<510000 
THEN GO SUB 1110 

880 IF w < x) <61 AND -fix) <510000 THEN GO SUB 
1105 

900 IF -f*(x)="c" THEN GO TO 1010 

910 IF zxch<100 THEN GO TO 1010 

915 IF 1ev=l AND RND> .5 THEN GO TO 950 

920 LET f=< ( ( <s/100)#5i)-f (x) >*d<x) ) 

930 IF < b ( x ) / 100) #51 >-f AND -f<zxch AND -f ( x ) < 5 



198 Asset Stripper 


10000 AND e(x)<510000 AND g(x)<l THEN GO TO 
2620 

940 IF f*(x)=*'c" THEN GO TO 1010 
950 IF zxch<100 THEN GO TO 1010 
955 LET tenth=zxch/10 

960 IF w < x)>60 AND g(x)>0 THEN GO SUB 1040 
970 IF 1ev=l THEN GO TO 1010 
980 IF w (x )>60 AND g(x)>l THEN GO SUB 1040 
990 IF w < x ) >60 AND g(x)>5 THEN GO SUB 1040 
1000 IF w (x )>60 AND g (x )>10 THEN GO SUB 1040 
1010 NEXT x 
1020 RETURN 

1040 IF (tenth/d(x.))+e(x)+f (x)>l(x) THEN RET 
u£n 

1050 IF -f < x ) < 510000 AND <-f (x) + (tenth/d (x) )) >s 

/2 THEN RETURN 

1060 LET a(x)=a(x)+tenth*1.05 

1070 LET zxch=zxch-tenth 

1080 LET -f (x)=f (x)+INT (tenth/d(x)) 

1090 LET 1 (x)=1 (x)-INT (tenth/d(x)) 

1100 RETURN 

1110 LET a <x ) =a (x ) - ( (-f (x)*d <x) )*1.05) 

1120 LET zxch=zxch+f(x)*d(x) 

1130 LET 1 ( x ) = 1 < x) +-f (x) 

1140 LET f(x)=0 
1150 RETURN 
1180 PRINT 

1190 PRINT TAB <9);"SHARE PRICES" 

1200 PRINT 

1210 PRINT "COMPANY" 5 TAB (11); "SHARE PRICE" JT 
AB (24) ;"UP/DOWN" 

1220 PRINT 

1230 FOR x=l TO 10 

1240 IF f$(x)="c" THEN PRINT c*(x)5“CLOSED D 
OWN" 

1250 IF -f*(x)="c" THEN GO TO 1310 
1260 IF INT d ( x)=d < x) THEN LET p$=STR$ d(x) + 
“ . 00 " 

1270 IF INT n(x)=n(x) THEN LET r*=STR$ n(x)+ 

“ . 00 " 


1280 IF INT d ( x)< d (x) THEN LET p*=STR* (INT 
((d(x)+.005)*100)/100) 

1290 IF INT n ( x)< n(x) THEN LET r*=STR$ (INT 
((n(x)+.005)*100)/100) 


Asset Stripper 199 


1300 PRINT c$(x)iTAB <21-LEN p$+1);p*;TAB (3 
0-LEN r$ +1)irS 
1310 NEXT x 
1320 PRINT 

1380 PRINT "ALL SHARE AVERAGE ";INT <<asa+.00 
51*100)/100 

1390 PRINT 11 You have £";INT ( < ch+ . 005) *100) / 1 
00 

1410 RETURN 

1430 PRINT "BUY HOW MANY?" 

1440 INPUT y 

1450 IF y*d(x)>c h THEN PRINT "You have insuf 
■f icient cash 11 

1460 IF y*d(x)>ch THEN GO TO 1430 
1470 IF y >1 (x) THEN PRINT "Not enough shares 
avai1ab1e" 

1480 IF y >1 < x) THEN GO TO 1430 

1490 IF y+e(x)>500000 AMD e<x)<510000 THEN G 

O TO 1660 

1500 LET ch = ch-<y*d <x) ) 

1510 LET 1 <x) = l (x) -y 

1520 LET a(x)=<a(x)+<y*d<x)))*1.05 

1530 LET e(x)=e < x)+y 

1540 LET x*="p" 

1550 RETURN 

1570 PRINT “How many do you wish to sell?" 
1580 INPUT y 

1590 IF y > e(x) THEN PRINT "You do not hold t 
hat many" 

1600 IF y>e(x) THEN GO TO 1570 
1610 LET ch=ch+(y*d(x)) 

1620 LET 1<x)=l(x)+y 

1630 LET a(x)=a(x)-((y*d(x))*1.05) 

1640 LET e(x)=e < x)-y 
1645 LET x$="p" 

1650 RETURN 

1680 LET t*="phaseh“ 

1690 LET zl=.01 

1700 PRINT TAB (7)i"TAKEOVER BID" 

1705 PRINT 

1710 PRINT "Your shareholding is "JINT <e(x)* 
100 )/s!" percent" 

1720 PRINT "Current share price is £“!INT <(d 
(x)+.005)*100)/100 



200 Asset Stripper 


1730 PRINT "There are ">INT l(x)i" available" 
1740 PRINT "You need " 5 INT (510000-e<x));“ -fa 
r a majority" 

1750 PRINT "These cost £";INT <{(510000-e(x)) 
*d (x ) + . 005) *100) / 100, 11 at market price" 

1755 PRINT "You have £";INT ((ch+.005)*100)/1 
00 

1756 LET eg=0 

1757 FOR v=l TO 10 

1758 IF f*(v)<>“c" THEN LET eg=eg+( i (v)*d<v) 

) 

1759 NEXT v 

1760 IF RND>.10 THEN GO TO 1769 

1762 PRINT "Third party wins bid" 

1763 GO SUB 2040 

1764 GO TO 1890 

1769 PRINT "How much do you bid per share?" 

1770 INPUT z 

1810 IF zl>z THEN GO TO 1880 
1820 LET k1=a(x) + (510000*(z +.01) ) 

1822 LET k2= (510000--f(x))*(z+.01) 

1830 IF k1>k2 AND (zxch + eg) > = k2 THEN LET zl = 
Z1+.01 

1840 IF zl')z THEN PRINT m*;" bids ";INT <<zl 

+.0051*100)/100 

1860 IF z1>z THEN GO TO 1760 

1870 IF z1< z THEN GO SUB 1920 

1880 IF zl>z THEN GO SUB 2170 

1890 LET zl=0 

1895 LET z=0 

1900 IF t$="phaseh" THEN GO TO 1540 

1910 IF t$="phasem" THEN GO TO 1010 

1920 REM disposal 

1930 PRINT 

1940 LET 21=0 

1950 LET F=0 

1960 PRINT "YOU HAVE WON THE BID" 

1970 LET CH=CH-(Z*(510000-E<X))) 

1980 LET A<X)=A<X)+(Z*(510000-E<X))) 

1990 LET E(X)=E(X)+(510000-E(X)) 

2000 LET L(X)=S-(E(X)+F(X)) 

2010 PRINT "Do yo want to strip the assets o-f 
this company?" 

2020 INPUT y$ 



Asset Stripper 201 


2030 IF y*=“n" THEN RETURN 

2040 PRINT "Assets are being distributed","am 
ongst shareholders" 

2050 LET psh =(e(x)*100) /s 
2060 LET z x p s h = < +( x ) # 100)/ s 
2070 LET oo=b < x )/ 100 
2080 LET ch=ch+ <psh*Do) 

2090 LET zxch=zxch+<zxpsh*oo> 

2100 IF a(x)< =0 THEN GO TO 2140 

2110 LET d(x)=a(x)/s 

2120 LET ch=ch+(e(xHfd(xl) 

2130 LET zxch=zxch+(f(x)#d(x)l 
2140 LET ■f^txJ^^c 11 
2150 LET 1(x)=0 
2160 RETURN 

2190 IF zHH 510000--f < x ) ) >zxch THEN PRINT “Sp 
ectral withdraws": RETURN 
2200 PRINT m*j“ has won bid" 

2220 LET zxch-zxch-( (510000-* < x ) ) *z 1 ) 

2230 LET a ( x)=a(x) + < < 510000--f < x ) ) *z 1) 

2240 LET * (x)=-f (x) + <510000--f <x) ) 

2250 LET zl=0 

2260 IF g(x)<1 THEN GO SUB 2040 

2270 RETURN 

2290 FOR x = l TO 10 

2300 IF **<x)= M c" THEN GO TO 2590 
2310 LET v<x)=0 
2320 LET c(x)=0 

2330 IF a(x)<10000 THEN LET a<x)=10000 
2340 LET j (x)=a(x)/10 
2350 LET c<x)=c<x)+j<x) 

2360 IF h(x)<j (x)/1000 THEN LET h<x)=j<x)/10 
00 

2370 IF b < x) > = a(x)/20 THEN GO TO 2400 
2380 LET c<x)=c<x)+(<a<x)/10)-b<x)) 

2390 LET b(x)=INT (a(x)/10) 

2400 LET prod=j ( x ) / 10 
2410 LET rnd=INT (RND*3555)+1 
2420 IF rnd=l THEN LET w(x)=w(x)-1 
2430 IF rnd=3 THEN LET w<x)=w(x)+l 
2440 LET t(x)=prod*w(x) 

2450 LET c(x)=c<x)+(h<x)*5000) 

2460 LET prot*t(x)-c(xl 
2470 LET a < x)=a < x)+t(x) 



202 Asset Stripper 


2480 LET a(x>=a<x)-c (x) 

2-490 IF a(x) < = 10000 THEN LET v<x)=h(x) 

2500 IF a(x)< = 10000 THEN LET h<x>=j (x)/1000 
2510 LET v(x)=v< x)-h (x) 

2520 LET g <x) = <pro-f*100)/t (x) 

2530 LET sp1 =d (x) 

25-40 IF a (x) <10000 THEN LET a (x) =10000 
2550 LET d(x)=a < x)/s 
2560 LET n < x)=d < x)-sp1 

2570 IF a(x)<10000 THEN LET a(x)=10000 

2580 IF RND>.9 THEN LET w(x)=w(x)+10 

2535 IF RND >.9 THEN LET w(x)=w(x)-10 

2590 NEXT x 

2610 RETURN 

2620 PRINT : PRINT 

2640 LET t$="phasera" 

2660 PRINT m$; " bid -for" 

2670 PRINT c$(x)i“takeover" 

2680 LET z1=d < x) 

2690 PRINT "at "iINT <<d<x)+.005)*100)/100;“ 

2700 60 TO 1710 

2740 PRINT “You have won" 

2750 GO TO 2780 

2770 PRINT m$;“ has won","with £";zxch+q3 
2730 PRINT “Do you want another game?” 

2790 INPUT v$ 

2800 IF v$=“y" THEN 60 TO 10 

2810 STOP 

2820 REM loop 

2830 GO SUB 2280 

2850 60 SUB 2280 

2860 60 SUB 100 

2870 GO SUB 460 

2890 60 SUB 1180 

2900 PRINT “ENTER INITIAL OF CHOSEN COMPANY" 
2910 PRINT "OR P(PASS)";w$ 

2920 INPUT x$ 

2930 IF x*="p" THEN 60 TO 3240 
2940 FOR x =1 TO 10 

2950 IF CODE c*<x) <1)=CODE x$-32 THEN GO TO 
2970 

2960 NEXT X 
2965 60 TO 2900 




Asset Stripper 203 


2970 IF -f$<x)="c" THEN GO TO 2900 

2980 PRINT 

2990 PRINT c*(x) 

3000 PRINT "Liquid capital £";INT <<a<x>+.005 
)* 100>/100 

3010 PRINT "Capital equipment £";INT <<b(x)+. 
005)*100)/100 

3020 PRINT "Employees "JINT h(x) 

3030 PRINT “Overheads £"JINT (<c(x)+.005)*100 
) /100 

3040 PRINT "Pro-fit £"iINT <(t<x)-c<x)+.005)*1 
00)/100 

3050 PRINT "Pro-fit percent o-f turnover £";INT 
g(x) 

3060 PRINT “Share price £“;INT <<d(x)+.005)*1 
00)/100 

3070 PRINT "Shares available ; INT l<x) 

3080 PRINT "Shares held by you " i INT e(x) 

3090 PRINT "Percentage shares held by you "jI 
NT <(e<x)*100)/s) 

3100 PRINT "You have £"}INT <<ch+.005)*100>/1 
00 

3110 PRINT “_" 

3120 IF e<x) > = 510000 THEN PRINT "Dispose o-f 
assets?" 

3130 IF e<x)>=510000 THEN INPUT a* 

3140 IF e < x)<510000 THEN LET a*="n" 

3150 IF e<x)>=510000 AND a*="y" THEN GO SUB 
2040 

3160 IF -f*<x)="x" THEN PRINT "Buy <b),Sell < 
s),or Pass (p) " 

3170 IF ■f*(x)="x" THEN INPUT x* 

3175 IF -f * ( x ) =" c " THEN LET x*="p" 

3180 IF x$<>"p" AND x*< >"s J1 AND x*<>"b" THEN 
GO TO 2900 

3190 IF. x$="b" THEN GO SUB 1420 

3200 IF x*="s“ THEN GO SUB 1560 

3210 IF x*=“p" THEN PRINT "Look at another c 

ompany?(y or n)" 

3220 IF x*="p" THEN INPUT a$ 

3230 IF x*="p“ AND a*="y“ THEN GO TO 2890 
3240 GO SUB 820 
3250 GO TO 2850 



204 Asset Stripper 


3270 LET m*— 1 'Spectral Investments Ltd" 

3280 DIM cS(10,18) 

3290 LET c* ( 1 ) = " ACME CORP" 

3300 LET c$(2)=”BRN IND.“ 

3310 LET c$<3)="CAPRA STEEL" 

3320 LET c* <4)="DELTA GROUP" 

3330 LET c* < 5)=“ELLIOT CORP" 

3340 LET c*(6)="FORAX CHEMICALS" 

3350 LET c$(7)="GNS INT. " 

3360 LET c$< 8)=“HOPE HOLDINGS" 

3370 LET c*<9)="INCE AND CO." 

3380 LET c*<10)="JONES AND PEEKE" 

3390 LET x=10 

3400 DIM a < x ) : DIM b<x): DIM c(x): DIM t(x): 
DIM d (x) : DIM p (x) : DIM e(x): DIM -f<x): DIM g 
(x): DIM h < x) 

3500 DIM i(3) 

3510 LET w$=" 

3520 DIM j(x): DIM 1(x) 

3540 LET e*=" Investments Ltd" 

3550 LET s=1000000 
3560 LET ch=100000 
3570 LET zxch=ch 
3580 LET aw=5000 
3590 LET asa=0 
3600 LET t*=“o" 

3620 DIM m(3) 

3630 LET pt=0 

3640 DIM n <x) : DIM w<x): DIM v(x) 

3680 DIM -f$<x) 

3690 FOR x=l TO 10 

3699 FOR x=l TO 10 

3700 LET a(x)=INT <RND*s/2)+l 
3710 LET d(x)=s/a < x) 

3720 LET t> < x ) =INT (RND*s/10)+l 
3730 LET h(x)=b(x)/10/1000 
3740 LET w(x)=60 
3750 LET -f$<x)=“x" 

3760 LET 1(x)=s 
3770 NEXT x 
3780 GO TO 2820 



205 

Bricklayer 


You are in control of a small aircraft which flies across the top of the 
screen. From the bottom of the screen, a large wall is being built up 
which will eventually fill the whole of the playing area. The object of the 
game is to drop men out of the aircraft, aiming to plummet them through 
gaps in the wall to the bottom of the screen. If a man should hit any part 
of the wall then a life will be lost. In order to create gaps for the men to 
drop through and to prevent the wall advancing too far up the screen, 
you also have the option of dropping bombs which blow sections of the 
wall away. 

1 PAPER 5: BORDER 5: CLS 

2 GO SUB 4000 

3 PAUSE 100 

5 LET hs=0 

10 GO SUB 180 

13 PRINT AT 0,135"HI:"5hs 

20 LET x = x + f 

30 IF x=0 OR x=29 THEN BEEP .04,10: LET -f = 
-i 

32 PRINT AT 0,0i "SCORE: "5s5 AT 0,24| “LIVES: " 
llivesi" “ 

40 PRINT AT 1,x;" B “ 

50 IF INKEY*=“z" THEN IF tOl THEN LET t = 
l: LET k = x + l: LET 1-2 

55 IF INKEY*="m" AND x>3 AND x<27 THEN IF 
zOl THEN LET z=l: LET q=x + l: LET i=2 

60 IF t=l THEN PRINT AT 1 , k 5 " “: LET 1=1+1 
: PRINT AT 1,L5"C": BEEP .002,0: IF SCREEN* ( 
1 + 1,k)< > " “ THEN GO SUB 140 

65 IF z=l THEN PRINT AT i,q!“ ": LET i=i+l 
: PRINT AT i,qj "D": BEEP .002,-5: IF SCREEN* 
(i+l,q)<>“ ” THEN GO SUB 160 

70 IF 1=21 THEN PRINT AT 1 ,k5“ ": LET t=0 
75 IF i=21 THEN LET s=s+b*2: BEEP .1,20: P 
RINT AT i,q;" ": LET i=0: LET z=0 
110 LET a=a+c 

115 PRINT AT b,a; INK RND*3; PAPER 7\“A" 

120 IF a<3 OR a>27 THEN LET c = -c: LET b=b-l 



206 Bricklayer 


125 IF b=3 THEN GO TO 1000 
130 GO TO 20 

140 PRINT AT 1,k!" PRINT AT l + l,l<-2;" 

LET t=0: IF 1< 20 THEN PRINT AT l+2,k-l|" 

150 RETURN 

160 PRINT AT i,q; FLASH 1;"*": LET lives=liv 
es-l: BEEP .1,-30: BEEP .1,-25: LET z=0: PRIN 
T AT i,q;“ “ i AT i + i,q-i;“ " : IF lives=0 THE 

N GO TO 1000 
166 RETURN 

180 DATA 0,126,126,126,126,126,126,126 

181 DATA 0,24,118,219,255,110,24,0 

182 DATA 231,126,60,60,60,60,60,24 

183 DATA 28,28,8,62,8,8,20,34 

190 FOR a=USR “a" TO USR'"d"+7: READ b: POKE 
a,b: NEXT a 

191 LET a=27: LET b=20 

192 LET c = -. 61 LET t=0: LET 1 = 1: LET z=0: LE 
T 1=1 

193 LET x=0: LET -f = l 

194 LET s=0 

197 LET 1ives=10 
200 RETURN 

1000 IF 1ives=0 THEN PRINT AT 0,30;“0" 

1010 FOR o=-30 TO 30 STEP 2 
1020 BEEP .01,□ 

1025 NEXT o 

1030 PRINT FLASH 1; AT 15,7; " ANOTHER GAME? 
1035 IF s>hs THEN LET hs=s 
1040 INPUT a$ 

1050 IF a* < 1 ) = “ y " THEN GO SUB 191: CLS : PAU 
SE 100: GO TO 15 
1060 STOP 

4000 PRINT AT 1,10; "BRICK LAYER" 

4010 PRINT AT 1,105 OVER 1?"_« 

4013 PRINT ’’The object is to drop humanoids 
from the spacecraft at the top of the screen 
As the game progresses a 
wall will be built up, starting from the bot 
tom.Holes can be made in this by releasing a 
t>omb - You have 10 lives and each t 

ime a humanoid hits the wall a life will be 1 
ost. * 


Bricklayer 207 


4015 PRINT ’ ' ■ Z.DROPS BOMBS 

M. ... RELEASES HUMANOIDS" 

4017 PRINT INVERSE lj’"Press any key to star 
t. " 

4020 PAUSE 0 
4025 CLS 
4030 RETURN 




208 


Dogfight 


Up in the wild blue yonder, you and the enemy ace are duelling above the 
trenches. Swoop down on the foe, hang on his tail, catch him unawares 
from below, with your trusty Brownings spitting leaden death. All good 
clean fun, but watch for the wraparound! 

1 REM Solo Dog-fight @ R. Erskine 1983 
5 GO SUB 8000 
10 GO SUB 9000 
20 BORDER 1: PAPER 5: CLS 
90 GO SUB 7100 
1000 REM main loop 

1005 IF p( 3 ) = q < 3) AND p(4)=q<4) THEN GO SUB 
4000 

1010 PRINT AT p(3),p(4)5” M 

1020 IF p (1)< 21 THEN PRINT INK 15 AT p(l),p< 
2);CHR* (a+143): LET p<3)=p<l): LET p<4)=p<2) 
1025 IF p (1)=q(3) AND p(2)=q<4) THEN GO TO 4 

000 

1030 PRINT AT q <3),q(4) j ” " 

1040 IF q(1>,21 THEN PRINT INK 0;AT q(l),q( 
2):CHRi£ (aa+151): LET q(3)=q(15: LET q(4)=q(2 

1050 IF INKEY$=" x" AND g=l THEN LET -F = l 
1060 IF RND >.5 AND g=-l AND ABS <p(l)-q<l)><7 
AND ABS (p (2) -q (2) ) <7 THEN LET -f=2 
1070 IF INKEY$="a" AND g=l THEN LET a=a+l: I 
F a=9 THEN LET a=l 

1080 IF RND>.9 THEN LET aa=aa+l: IF aa=9 THE 
N LET aa=l 

1090 IF INKEY$="z” AND g=l THEN LET a=a-l: I 
F a=0 THEN LET a=3 

1100 IF RND >.9 THEN LET aa=aa-l: IF aa=0 THE 
N LET aa=8 

1110 IF -f>0 THEN 60 SUB 2000 

1115 IF p(11 >20 THEN LET p (1)=0 

1116 IF q <1) >20 THEN LET q(1)=0 

1117 IF p(l)<0 THEN LET p < 1) =20. 

1118 IF q ( 1 <0 THEN LET q ( 1 ) =20 

1130 LET p(l)=p(1)+d(a): LET p < 2) =p < 2)+d < a + 8 > 



Dog Fight 209 


1160 IF p (2)>31 THEN LET p(2)=0 
1170 IF p(2)<0 THEN LET p<2)=31 
1180 LET ■ q(1)=q(1)+e(aa) : LET q(2)=q(2)+e(aa+ 
8 ) 

1210 IF q(2)>31 THEN LET q(2!=0 
1220 IF q <2)<0 THEN LET q<2)=31 
1230 LET g=-g 
1250 GO TO 1000 
2000 REM fire 

2010 IF -f = l THEN LET x=FN a(p(2)): LET y=FN 
b (p ( 1) ) : LET y=-y 

2020 IF -f =2 THEN LET x = FN a<q<2)): LET y=FN 
b(q(1)>: LET y=-y 

2030 IF f = 1 THEN LET xx=fta): LET yy=-f(a+3) 
2040 IF i=2 THEN LET xx=g<aa): LET yy=g(aa+8 

2045 LET cnt=0 

2050 IF x >247 OR x<8 OR y<8 OR y>175 THEN GO 
TO 2200 

2055 IF cnt >0 THEN PLOT INK -f i OVER 1 jx,y 
2070 IF f=l AND ATTR <q(1),q(2))=41 OR f=2 AN 
D ATTR <p<1),p<2))=42 THEN GO TO 5000 
2085 LET crit=cnt + l 

2090 PLOT INK -f; OVER ljx,y: LET x = x + xx: LET 

y=y+yy 

2095 IF cnt<6 THEN GO TO 2050 
2200 LET -f =0: RETURN 

3080 PRINT PAPER 2; INK 6; FLASH 1;AT 20,q(2 

3090 FOR x = 1 TO 10: BEEP .1,-20: NEXT x: PRIN 
T PAPER 55 AT 20,q(2);" " 

3100 LET Iives2=lives2-l: IF lives2=0 THEN G 
O TO 6000 

3110 LET aa=l: LET q<l)=20: LET q(2)=31 

3120 GO SUB 7100 

3130 RETURN 

4000 REM collision 

4010 PRINT INK 2i PAPER 6! FLASH 1jAT p(3),p 
( 4 ) j " * " 

4020 LET 1ives=lives-1: LET 1ives2=lives2-l 
4030 FOR 1=1 TO 10: BEEP .1,-20: NEXT 1 
4040 IF 1ives=0 OR lives2=0 THEN GO TO 6000 
4045 PRINT AT p(3i,p<4);" * 

4050 LET a=l: LET aa=l: LET p(l)=20: LET p(2) 



210 Dog Fight 


=0: LET q C 1 ) =20; LET q<21=31: LE T p(3)=p(i): 
LET p (4 ! =p-( 2) : LET q<3)=q<l): LET q(4)=q(2) 
4060 GO SUB 7100 
4070 GO TO 1000 

5000 IE +=i THEN PRINT PAPER 2;AT q(l!,q!2) 

. 

5010 IF f = 2 THEN PRINT PAPER 2; AT p(l),p<2) 
; " * " 

5030 FOR 1=1 TO 10: BEEP .1,-20: NEXT I 
5040 IF -f = l THEN LET 1 i ves2= I i ves2-1: IF liv 
es2=J0 THEN GO TO 6000 

5050 IF f =2 THEN LET 1 i ves= 1 i vss- 1 : IF lives 
=0 THEN GO TO 6000 

5060 IF -f = l THEN LET q<i)=20: LET q(2)=31: L 
ET aa=1 

5070 IF -f =2 THEN LET p(l)=20: LET p <21=31: L 
ET a=l 

5080 GO SUB 7100 
5090 GO TO 2100 

6000 REM end: IF lives=0 AND lives2=0 THEN P 
RINT AT 18,4;"The result is a draw" 

6010 IF Iives=0 AND lives2>0 THEN PRINT AT 1 
8,3;”The computer is the winner" 

6020 IF 1 ives >0 AND lives2=0 THEN PRINT AT 1 
8,4;" You are the winner" 

6030 PRINT AT 20,4;"Press any key to restart" 
6040 IF INKEY*="" THEN GO TO 6040 
6050 RUN 

7100 PRINT PAPER 1; INK 7;AT 21,0;"PLYR LIVE 
S: ";lives;" COMP, lives: ”;iives2 

7110 RETURN 

8000 PAPER l: INK 7: BORDER 1: CLS 

8010 PRINT AT 0, 9; "SOLO-DOGFIGHT": PRINT : PR 

I NT 

8020 PRINT : PRINT “ Player controls:" 

: PRINT : PRINT " a = up z = down x = -fire 
" : PRINT : PRINT : PRINT : PRINT "The player 
controls the blue ","aircraft and the compute 
r ","controls the black.” 

8050 PRINT AT 21,4;"Press any key to start" 
8060 IF INKEY$="" THEN GO TO 8060 
8070 RETURN 
9000 DIM p C4) 

9010 DIM q14) 





Dog Fight 211 


9020 DIM g$(2,1) 

9030 DIM d < 16): DIM e(16) 

90-40 LET g= 1 

9050 LET p ( 1)=20: LET p<2)=0: LET q(1)=20: LE 
T q(2)=31! LET p(3)=p(l): LET p(4)=p(2): LET 
q < 3)=q(1) : LET q(4)=q(3) 

9060 LET a=l: LET aa=a 
9070 RESTORE : FOR x=l TO 16 
9080 READ n: LET d(x)=r> 

9090 READ n: LET e(x)=r> 

9100 NEXT x 

9110 DATA 0,0,-1,-1,-1,-1,-1,-1,0,0,1,1,1,1,1 
, 1 

9120 DATA 1,-1,1,-1,0,0,-1,1,-1,1,-1,1,0,0,1, 
-1 

9130 LET -f=0 

9140 LET g$(l)=CHR* Ca+143): LET g$(2)=CHR$ ( 
aa+151) 

9150 FOR x=USR "a" TO USR "p"+7 
9160 READ n 
9170 POKE x,n 
9180 NEXT x 

9190 DATA 0,15,132,255,0,15,0,0 
9200 DATA 8,26,52,9,18,164,64,0 
9210 DATA 84,84,116,84,16,16,16,48 
9220 DATA 16,72,36,208,72,36,2,4 
9230 DATA 0,240,0,255,33,240,0,0 
9240 DATA 0,2,37,72,144,36,88,16 
9250 DATA 12,8,8,8,42,46,42,42 
9260 DATA 32,64,36,18,11,36,18,8 
9265 DATA 0,240,33,255,0,240,0,0 
9270 DATA 16,88,164,144,72,37,2,0 
9275 DATA 42,42,46,42,8,8,8,8 
9280 DATA 8,18,36,11,18,36,64,32 

9285 DATA 0,0,15,0,255,132,15,0 

9286 DATA 0,64,164,18,5,36,26,4 

9287 DATA 48,16,16,16,84,116,84,84 

9288 DATA 4,2,36,72,203,36,72,16 
9290 LET lives=3: LET lives2=3 
9300 DEF FN a(x!=x#8+4 
9310 DEF FN b(x)=x*8-172 
9320 DIM f(16): DIM g(16) 

9330 FOR x = 1 TO 16: READ r.: LET -f(x)=n 


: NEXT 




212 Dog Fight 


9350 DATA 3,3,0,-8,-8,-3,0,8,0,S,3,3,0,-8 -3 

-3 . . 

9360 FOR x=l TO 16: READ n: LET g(x)=n: NEXT 

9-j70 DATA -3,-8,0, 8,8, 8,0,-3,0, 3, 8,8,0,-3,-8, 

9999 RETURN 



213 


This is series of six programs which have been divided into three self 
contained groups. It represents the evolution of life from the single celled 
amoeba to modern man, linked by a single theme—survival! 

Evolution 1 


Evolution 1 begins with the amoeba stage, in which the player controls 
the movement of a tiny amoeba which must wander round the screen 
eating spores whilst avoiding attack from other single celled creatures. 

In the second program in this suite the player is transformed into a frog 
which has to dodge from side to side avoiding capture by birds whilst 
zapping the required number of airborne flies with its tongue. There is 
no fairy princess as a reward for this one but instant promotion into the 
form of a beaver in the third program, in which you must swim around 
and capture ten fish whilst avoiding contact with a vicious crab. 

i BORDER 0: PAPER 0: INK 7: CLS 
100 PRINT AT 0,6;"E VOLUTION" 

110 PRINT • INK 6’“This semi-scientific seri 
es of*' INK 5* “routines gives you the chance 
to” INK 4’“evolve -from an amoeba to a human” 

• INK 7'“based on the theory that only*’ INK 
6’“the strong survive. ” 1 INK 5'"Press ENTER 
to continue.* 

120 PAUSE 0: CLS 

122 PRINT "This program goes -from amoeba t 

o -frog to beaver."' INK 5'“The next program g 
oes from gorilla to caveman."’ INK 4’"Th 

e final program of this trio involves the pr 
esent stage of evolution - MAN and his tech 

nology. “ 

123 PRINT ’“The intention is that you should 
try the stages in the correct order but aft 
er each stage you are given a menu of option 
s. “ 

124 PRINT ’"Press ENTER to continue."; PAUSE 
0: CLS 

130 GO TO 1000 

140 PRINT “The first stage is as an amoeba < 
A ). You have to eat 5 spares ( D ) while av 



214 Evolution 1 


aiding B and C .“ 

150 PRINT INK 6’“This is also a battle agai 
nst time, -for when the clock at the top a-f 
the screen says 0, it means that you have 
starved because you did not eat the s 

pores in time.“ 

155 PRINT ’“Move about in the water with the 
cursor keys 5-8." 

160 PRINT INK 5’“Press ENTER to start stage 
1.": PAUSE 0: CLS : GO TO 1050 
1000 LET a=0: RESTORE 1010: FOR -f=USR "a” TO 
USR “d" +7: READ g: POKE f,g: NEXT -f 
1010 DATA 120,132,180,178,129,153,85,51 
1020 DATA a,24,36,90,90,36,24,a 
1030 DATA a,73,42,28,127,28,42,73 
1040 DATA a,60,66,145,133,145,66,60 
1045 GO TO 140 

1050 LET ay=15: LET ax=14: DIM y<6): DIM x<6> 
: LET a%~"BBCCDD" 

1055 LET t=100: LET sc=0 

1060 FOR f = l TO 6: LET y<-f)=INT <RND*22): LET 
x (f ) =INT <RND*32): PRINT BRIGHT 1; AT y<-f),x 
<-f ) 5 INK i ) : NEXT -f 

1100 PRINT AT ay,ax;“/9“ 

1110 FOR *«1 TO 5 STEP 2: FOR i-f TO i +1 
1120 PRINT AT y(i),x(i);“ ": LET y<i)=INT (y( 

i)+RND*2-RND#2): LET x<i)=INT <x(i)+RND*3-RND 
*3) 

1125 IF -f < 5 THEN LET y < i ) =y (i ) + < y (i ) < ay) - (y ( 

i ) >ay) : LET x (i) =x (i ) + {x (i) < ax) - (x (i) >ax) 

1130 IF y(i)<a OR y(i)>21 THEN LET y(i)=ll 

1140 IF x(i)<a OR x(i)>31 THEN LET x(i)=15 

1150 PRINT BRIGHT lj INK *SAT y<i) ,x ( i ) 5 a* ( i 
) 

1155 IF ATTR <ay,ax)<>6 THEN GO TO 1200 
1157 PRINT AT ay,ax|“ ■ 

1160 LET ay=ay+(INKEV*="6" AND ay<21)-<INKEY* 
-■7“ AND ay>a) 

1170 LET ax=ax+<INKEY*-“8“ AND ax<31)-(INKEY* 
«*5" AND ax >a) 

1175 LET t-t.-l: PRINT AT a,15jti" “I IF t=a T 
HEN GO TO 1?00 

1176 IF ATTR <ay,ax)<>7 AND ATTR (ay,ax)<>6 T 



Evolution 1 215 


HEN GO TO 1200 

1177 PRINT AT ay,axi"A" 

1180 NEXT i: NEXT i : GO TO 1100 

1200 IF ATTR (ay,ax)<69 THEN GO TO 1210 

1201 PRINT FLASH 1 ; AT ay, ax; M /?“ : FOR j=l TO 
15: BEEP .01,RND*20: NEXT j! FOR j=5 TO 6 

1202 IF ay«*y (j ) AND ax=x (j I THEN LET wh-j 

1203 NEXT j: LET y(wh)«INT <RND#22): LET x(wh 
)-INT <RND*32): PRINT INK whiAT y(wh),x(wh)i 
a$(whl 

1205 LET sc=5c+l: IF sc<5 THEN GO TO 1177 
1208 CLS : PRINT "Well done you survived the 
-first”’ INK 6’"stage o-f evolution as an amoeb 
a.*: 60 TO 8000 

1210 FOR -f-5 TO 30 STEP 5: BEEP .01,-f: NEXT -f 
: CLS : PRINT ’“Bad luck! You -failed in the 1 
st stage o-f evolution.”: GO TO 8000 
2000 PRINT "In this stage you have to catch f 
lies on your tongue, while avoiding the b 

irds which swoop down to try and capture the 
ir prey- YOU !“ 

2010 PRINT INK 6’"Press 0 to stick your tong 
ue out6 to move le-ft, and 7 to move right." 
’ INK 5’"You have survived this stage when 
you have consumed 10 -flies without -falling p 
rey to the birds."’ INK 4’"Press ENTER to 

start." 

2020 PAUSE 0: CLS 

2030 RESTORE 2040: FOR -f=USR "a" TO USR "g“+7 
: READ g: POKE -f, g: NEXT -f 

2040 DATA 28,34,78,79,56,32,64,48,56,68,114,2 
42,28,4,2,12 

2050 DATA 15,48,64,92,88,84,82,249,240,12,2,5 
8,26,42,74,159 

2060 DATA 0,0,0,34,85,63,24,0 

2070 DATA 0,0,0,63,127,143,1,15,31,124,240,19 
2,224,255,0,0 

2100 LET x=15: LET y(1)=RND#6+13: LET x(l)=0: 

LET y(2)=0: LET x(2)=30: LET y(3)=y<2): LET 
x <3)=x(2): LET -f=0 

2110 INK 5: PLOT 0,7: DRAW 255,0: INK 4 
2120 PRINT AT 0,15)-fjAT 19,xj" AB " J AT 20,xl" 
CD “i INK 6 j AT y<1) ,x< 1) i "£";AT y(3),x(3)S" 



216 Evolution 1 


“; INK 5;AT y(2),x(2); *F6“ 

2122 LET y (3)=y(2): LET x<3)=x<2> 

2125 IF INKEY*="0" THEN GO SUB 2200 

2130 IF INKEY*<>"“ THEN BEEP .003,1: BEEP .0 

03,2: BEEP .003,3: BEEP .003,4 

2140 IF ATTR (18,x+2)=5 THEN GO TO 2250 

2150 IF y <2)=18 THEN PRINT AT y(2),x(2);“ 

: LET y(2)=0: LET x(2)=x+9: IF x(2)>30 THEN 
LET x*2)=30 

2155 IF x <1) >29 THEN PRINT AT y<l),x<l)J“ ": 

LET x(1)=0: LET y ( 1)=RND*6+13 
2160 PRINT AT y(l),x(l) 5 " " J AT y<2),x<2)5 ,, 
2180 LET y(2)=y(2)+2: LET x<2)=x(2)+(x(2)<x+1 
)-(x<2)>x+l): LET y(l)=y<l)+RND*i.5-RND*1.5: 
LET x(l)=x(l>+RND#1.5: IF y<11>20 THEN LET y 
(1)=14 

2190 LET x=x-(INKEY*="6" AND x>0)+(INKEY*=" 7" 
AND x<28) 

2195 GO TO 2120 

2200 PLOT x*8+12,17: DRAW 0,57 
2202 BEEP .05,-10: BEEP .05,-6 

2204 PLOT OVER ljx*8+12,17: DRAW OVER 1J0,5 
7 

2210 IF ATTR < y (1 > , x < 1 ) ) =4 THEN LET f-f+l: B 
EEP .1,-30: PRINT AT y(1),x(l); M ": LET x(l)= 
0: LET y<l)=RND*6+13 

2220 IF -f = 10 THEN CLS : FOR f = 10 TO 0 STEP - 
l: BEEP .05, + : NEXT -f : PRINT ’"Well done! You 
consumed 10 fliesand can therefore evolve to 
the next stage.": GO TO 8000 
2230 RETURN 

2250 FOR f = i TO 20: BEEP .01,+: NEXT +: CLS : 

PRINT ’“You have been consumed and can evol 
ve no +urther.*: GO TO 8000 

3000 INK 7: PRINT "You have now evolved to a 
beaver"’ INK 6’“In this stage you have to eat 
"’ INK 5'“10 +ish be+ore you are eaten by"’ I 
NK 4’“the patrolling crab." 

3010 PRINT ’“Move using 5-8 and try to eat 
the +ish be+ore the +resh-water crab does. Ma 
ke sure that you avoid the crab because i+ 
it comes into contact with you it will ea 
t you and you will evolveno further." 



Evolution 1 217 


3020 PRINT INK 5’“Press ENTER to start.": P£ 
USE 0: CLS 

3030 RESTORE 3040: FOR + =USR "a" TO USR “g"+7 
: READ g: POKE + ,g: NEXT -f 

3040 DATA 0,0,15,16,224,159,8,12,0,32,220,10, 
1,254,16,24 

3050 DATA 0,4,59,80,128,127,8,24,0,0,240,8,7, 
249,16,43 

3060 DATA 0,0,8,61,191,255,255,255,12,30,BIN 
10111010,255,255,BIN 10111110,30,12 
3065 DATA 195,60,255,126,235,66,165,165 
3070 PRINT AT 21,0; PAPER 1 ;“EEEEEEEEEEEEEEEE 
EEEEEEEEEEEEEEEE" 

3080 FOR +=5 TO 20: PRINT INK li PAPER 1;AT 

: next 

-f 

3085 LET y=20: LET x = 15: LET yl=y: LET xl=x! 
LET + =5: LET g=0: LET fl=+: LET gl=g 
3087 LET a X= U AB“: LET + i=0: PRINT AT 0,15i+i 
3090 IF RND >.95 THEN PRINT BRIGHT li INK RN 
D*4 + 3i PAPER 1 ; AT RND-K-15+5, RND-X-29 + 1 i ”E“ 

3095 IF ATTR (y,x>>64 OR ATTR <y,x+l)>64 THEN 
BEEP .1,0: LET -f i=-f i +1 : PRINT AT 0,15i+i: I 
F + i = 10 THEN PRINT AT yl,xli INK li PAPER li 
INK 4 i FLASH 1 i AT y,xia$; FOR -f = l TO 30 
: BEEP .07,RND*20: NEXT + : GO TO. 3250 
3098 PRINT AT yl,xli INK li PAPER 1i“ “iAT + 

1, gl i " "i INK 4 ; AT y , x i a$ i INK 6 i AT +,gi“6“ 
3115 LET yl=y: LET xl = x: LET -fl=-f: LET gl=g 
3117 IF -f =y THEN IF g=x OR g=x + l THEN FOR f 
= 1 TO 20: BEEP .01,-f: NEXT i : GO TO 3300 
3120 IF INKEY*=“8" THEN LET a$="/4 S“: LET x = x 
+ < 2 AND x < 29) 

3130 IF INKEY*="5" THEN LET a.*=“CD“: LET x=x 
-<2 AND x>l) 

3140 IF INKEY*=*“7“ THEN IF y>5 THEN LET y=y 
-1 

3150 IF INKEY*=”6" THEN LET y=y+(y<20) 

3160 LET -f = INT < -f +RND*1.5-RND*l. 5+ (i < y) - (-f >y) 

): LET g=g +1 

3170 IF -f < 5 OR i >20 THEN LET -f=(20 AND +>20) 
+ < 5 AND + < 5 ) 

3180 IF g=31 THEN LET g=0 




218 Evolution 1 


3190 GO TO 3090 

3250 CLS : PRINT ’"Well done! You survived as 
a beaver and you can continue to the nex 
t stage i i you wish." 

3260 GO TO 8000 

3300 CLS : PRINT '"Bad luck! You can evolve n 
o" ’ INK 6’“-further because you have been"’ IN 
K 5’"destroyed by the crab.": GO TO 8000 
8000 PRINT ’"Press the key which corresponds 
to what you want to do next." 

8010 PRINT INK 6' “1. .. .Amoeba stage. “ ’ ’"2... 
.Frog stage.“’’"3. ... Beaver stage. "' ' "4....Lo 
ad stages 4fc5. " ’ ’ "5. . . . Exi t -from the program. 


8020 IF 
8030 IF 
8040 IF 
8050 IF 
8060 IF 
8070 IF 
8080 GO 


INKEY*="" THEN 
INKEY*="1" THEN 
INKEY$=“2“ THEN 
INKEY*="3" THEN 
INKEY$=“4" THEN 
INKEY$=“5“ THEN 
TO 8020 


GO TO 8020 
CLS : RUN 130 
CLS : GO TO 2000 
CLS : GO TO 3000 
LOAD "“ 

STOP 



219 


Evolution 2 


In the second program in this suite the player is transformed into a frog 
which has to dodge from side to side avoiding capture by birds whilst 
zapping the required number of airborne flies with its tongue. There is 
no fairy princess as a reward for this one but instant promotion into the 
form of a beaver in the third program, in which you must swim around 
and capture ten fish whilst avoiding contact with a vicious crab. 

Evolution 2 contains two programs. In the first, the player controls a 
large gorilla which lumbers round a forest collecting bananas which drop 
randomly to the ground. The computer controls a small and extremely 
agile monkey which makes for very tough competition. 

The second program in this section puts you in control of a caveman who 
tries to kill raiders attacking his territory from surrounding caves by 
firing arrows. 

1 REM DEVOLUTION 2* 

5 BORDER 0: INK 7: PAPER 0: CLS 

10 PRINT ’“I-f you have tried the previous 
program this will be the 4th stage in the 
evolution sequence." 

20 PRINT INK 6’"I-f you haven’ t then the ob 
ject is to evolve as -far as possible in a ro 
le-playing series o-f different programs." 

30 PRINT INK 5’"In this stage you play the 
part o-f a gorilla who competes against 

a smaller monkey who is faster than you." 

40 PRINT INK 4’"You have to eat only 10 ou 
t of 40 bananas which are placed in the for 
est in random positions, but the monkey likes 
bananas as well!" 

50 PRINT ’"Press ENTER to continue.": PAUSE 
0: CLS 

60 PRINT ’“Move with 5-8, but note that you 
cannot go through the trees." 

70 PRINT INK 6’"You pick up a banana by al 
igningthe top half of your body with the ban 
ana. " 



220 Evolution 2 


80 PRINT ’ INK 5 ’"Press ENTER to start.”: P 
AUSE 0: BORDER 4: PAPER 4: INK 0: CLS 
90 RESTORE 110 

100 FOR 1 =USR "a" TO USR "h'' + 7: READ g: POKE 
f,g: NEXT -f 

110 DATA 64,99,101,51,63,31,13,7,0,192,160,1 
92,248,252,190,231 

120 DATA 7,7,7,14,12,12,12,28,227,225,224,11 
2,48,48,48,56 

130 DATA 2,2,6,14,28,56,240,0,25,25,255,188, 
152,60,36,102 

140 DATA 247,195,129,1,0,128,129,195,231,231 
,231,231,231,231,231,231 
200 FOR 1=0 TO 31: PRINT AT 0,1i INK 4; PAPE 
R 2 ; " <3 ” ; AT 20, -f PAPER 1 i AT 1, -f ; n H " ; AT 21 

, -f; *H a : NEXT -f 

210 FOR -f =2 TO IS STEP 2: PRINT INK 4j PAPE 
R 25AT 1 ,0; "GG“ ; AT -f , 30; "6(5 ” ! AT -f + 1,0; PAPER 
l; “ HH M ; AT f + 1,30; "/V/y": next -f 
220 RANDOMIZE 

230 FOR -f = l TO 12: LET x=RND#27+2: LET y=RND 
*16 + 2: PRINT PAPER 2; INK 4;AT y,x;"<S”;AT y + 
l j x; PAPER NEXT 1 . 

240 LET g=2: LET 1=2: LET gl=g: LET -fl=-f: LE 
T y=18: LET x=28: LET yl=y: LET xl=x 
250 LET b=40: LET s=0 

260 LET by=INT <RND*15+2): LET bx=INT <RND*2 
6 + 2 ) 

265 IF SCREEN* <by,bx)<>“ " THEN GO TO 260 
270 PRINT INK 6;AT by,bx;ӣ" 

2S0 PRINT INK 7;AT 0,3;b;AT 0,28;s 
300 PRINT AT y1,x1; " ”;AT yl + l,xl;" ";AT y 

, x ; " AB“ ; AT y + 1, x ; "CD" ; AT -fi,gl;“ “ ; AT 1, g;"F" 
i INK 6;AT by,bx; "S" 

320 IF y=by THEN IF x=bx OR x+l=bx THEN GO 
SUB 650 

330 IF 1 =by THEN IF g=bx THEN LET b=b-l: P 
RINT AT 0,3; INK 7;b;" ”: BEEP .1,-10: GO SUB 

655 

335 LET yl=y: LET xl=x 
340 LET -f 1 =-f : LET gl=g 

350 LET y=y +( INKEY*="6” AND y<18)-(INKEV*="7 
■ AND y >2)5 LET x = x+(INKEY*=”8” AND x<28)-(IN 



Evolution2 221 


KEY*="5" AND x>2) 

360 IF ATTR <y,x)<23 OR ATTR <y+l,x)<23 OR A 
TTR (y,x+1)<23 OR ATTR (y+l,x+l)<23 THEN LET 
y=y 1: LET x = xl 

380 LET f=f + <4 <by)-<f>by): LET g=g+<g<bx)-<g 
>bx) 

390 IF ATTR <f,g><23 THEN LET f = INT (-fl + RND 
#1.5-RND*l.5)I LET g=INT (gl+RND*1.5-RND*l.5) 

: GO TO 390 
500 GO TO 300 

650 LET s=s+1: LET b=b-l: PRINT INK 7;AT 0, 
3!bI * ";AT 0,285s 
652 BEEP .1,10 
655 IF s=10 THEN GO TO 300 
657 IF b=0 THEN GO TO 700 

660 LET by=INT (RND*15+2): LET bx“INT (RND*2 
6 + 2 ) 

665 IF SCREEN* (by,bx)<>" u THEN GO TO 660 
670 PRINT INK 6JAT by,bxl"£" 

680 RETURN 

700 BORDER 0: PAPER 0: INK 7: CLS 
710 PRINT *“Bad luck! You are not fast 
enough to progress any -further in evolution. 

760 GO TO 1810 

800 BORDER 0: INK 7: PAPER 0: CLS : PRINT ’" 
Well done! You managed to eat the bananas b 
e-fore you starved and therefore you can proc 
eed to the next stage." 

900 GO TO 1810 

1000 PRINT ’"The object here is to stop other 
cavemen from attacking your cave"' INK 5’"You 
r cave is in the middle of 8 others, and from 
any of these can corne rivals who are prepa 
redto kill you in order to steal your prope 
rty. * 

1010 PRINT INK 5’"You can spin round with 6 
and 7 and throw a spear with 0. You have su 
ccessfully defended your cave when 30 attacks 
have been made. However, you are given 3 1 

ives to make your task easier." 

1020 PRINT INK 4’"Press ENTER to start." 


222 Evolution 2 


1030 PAUSE 0: CLS 

1040 RESTORE 1050: FOR -f=USR "a" TO USR "i"+7 
: READ g: POKE -f,g: NEXT -f 

1050 DATA 8,28,8,3,8,8,8,8,0,6,6,8,16,32,64,0 
,0,0,2,255,2,0,0,0,0,64,32,16,8,6,6,0 
1060 DATA 8,8,8,8,8,8,28,3,0,2,4,8,16,96,96,0 
,0,0,64,255,64,0,0,0,0,96,96,16,8,4,2,0 
1070 DATA 28,28,8,62,3,28,20,20 

1075 FOR -f = l TO 6 : READ s,c: PRINT AT s,cj IN 
K RND*5+2;“ “ 5 AT s+l,c;“ ■: NEXT -f : PRINT 

INK RND#5+2iAT 9,0;" " ; TAB 30;" ";AT 11,0 

i" M ;TAB 30;“ 

1077 DATA 1,5,1,14,1,23,20,3,20,25,20,14 

1079 PRINT INK 4 5 AT 8,14;“ " ; AT 9,13;" 

“5 AT 11, 13; “ ")AT 12,14;* 

1080 LET q=l 

1085 PRINT AT 0,0;“LIVES: 77“ 

1090 LET a *=“ABCD£fGH": LET a=l: LET s=0: LET 
c =0 

1091 LET k=0 

1092 PRINT AT 0,21;“ATTEMPTS:";c: IF c=30 THE 
N GO TO 1700 

1095 GO SUB (INT <RND*8)*10)+1400 
1100 PRINT AT 10,15; INK 4;a*(a) 

1110 PRINT AT y,x;“ “: LET y=y+dy: LET x=x+dx 
: PRINT AT y, x ; INK 5; “7“ 

1115 IF y=10 THEN IF x=15 THEN GO TO 1600 
1120 IF s THEN PRINT AT +, 9 ;“ “: LET -f=-f+dy2 
: LET g=g+dx2: PRINT AT -f,g; INK 3jb* 

1130 IF s THEN IF <-f=y AND x=g) OR <-f+dy2=y 
AND g+dx2=x) THEN PRINT AT f,g;“ “: FOR w=7 
TO 0 STEP -1: PRINT INK w}AT y,x;“7": BEEP 
02,-f: NEXT w: LET s=0: LET c=c + l: GO TO 1092 
1140 BEEP 1/<c+20),(y+x)/2 

1200 LET a=a+(INKEY*=“7" AND a<8)-<7 AND INKE 
Y¥="7“ AND a* 8 )-(INKEY*= H 6 n AND a>l)+<7 AND I 
NKEY*=“ 6 “ AND a=l) 

1210 IF INKEY*= ,, 0" THEN IF 5=0 THEN LET b*= 
a*(a): LET -f = 10 : LET g=15: LET s-1: GO SUB 15 
10 +a *10 

1300 GO TO 1100 

1400 LET y=q: LET x= 6 : LET dy=q: LET dx=q: RE 
TURN 



Evolution2 223 


1410 

LET 

y=q: LET x=15: LET dy=q: LET dx=0: R 

ETURN 




1420 

LET 

y= q: LET x=24: LET dy=q: LET dx=-q: 

RETURN 




1430 

LET 

y=10: 

LET X=31: LET dy=0: 

LET dx=-q: 

RETURN 




1440 

LET 

y=21: 

LET x=26: LET dy=-q: 

LET dx=-q 

: RETURN 




1450 

LET 

y-2l: 

LET x=15: LET dy=-q: 

LET dx*0: 

RETURN 




1460 

LET 

y=2l: 

LET x=4: LET dy=-q: 

LET dx=q: 

RETURN 




1470 

LET 

y=10: 

LET x=0: LET dy=0: LET dx=q: R 

ETURN 




1520 

LET 

dy2=-J 

L: LET dx2=0: RETURN 


1530 

LET 

dy2=-J 

l: let dx2=i: return 


1540 

LET 

dy2-0 

LET dx2-l: RETURN 


1550 

LET 

dy2=l 

LET dx2*l: RETURN 


1560 

LET 

dy2= 1 

LET dx2=0: RETURN 


1570 

LET 

dy2=l 

LET dx2=-1: RETURN 


1580 

LET 

dy2=0 

LET dx2=-1: RETURN 


1590 

LET 

dy2=- 

l : LET dx2=>-l: RETURN 


1600 PRINT AT *, 9 ;" "» FLASH 1iAT y,x;"7": FO 

R f = l TO 20: BEEP .01,*: BEEP .01,10-+: NEXT 
*: PRINT AT y, x ;a$ < a) : LET k=k+l: PRINT AT 0, 
k + 6;“ * 

1605 IF k*=3 THEN GO TO 1800 
1607 LET s=0 
1610 GO TO 1092 

1700 CLS : PRINT “Well done! De+ending your c 
ave was not easy, but you did very well and 
you can evolve further if you wish to." 

1710 GO TO 1810 

1800 CLS : PRINT "Bad luck! You failed in you 
r attempt to defend your cave.“ 

1810 PRINT INK 4'“Press the key which corres 
ponds to what you want to do next." 

1820 PRINT INK 5*"1...Start the gorilla stag 
e.*’*"2...Start the caveman stage.“’’"3...Loa 
d the 6 th stage."’’"4...Exit from the program 

1830 IF INKEY*=“" THEN GO TO 1830 
1840 IF INKEY*=“1" THEN CLS : GO TO 30 



224 Evolution 2 


1850 IF INKEY*="2" THEN CLS : GO TO 1000 
1860 IF INKEYS="3 U THEN LOAD "“ 

1870 IF INKEY$= H 4" THEN STOP 
1880 GO TO 1830 



225 

Evolution 3 


Evolution 3 is the logical culmination of survival conditioning. As the 
leader of the superpower of your choice you must destroy your enemy’s 
capitals with cruise missiles before you are destroyed by one of their 
ICBM’s. To do this you have a very short time to pre-program the flight 
of your missile with a series of direction codes as the enemy’s missile 
moves towards your capital. The screen features a map of the world on 
which the missile courses are plotted. 

1 BORDER 0: PAPER 0: INK 7: CLS 
3 POKE 23653,10 
5 REM @ P.Stanley 

10 DATA 0,8,28,8,8,62,0,0,0,32,36,62,36,32, 
0,0,0,62,8,8,28,8,0,0,0,2,18,62,18,2,0,0 

15 DATA 128,128,128,128,128,128,128,255,128 
,128,128,156,156,128,128,255 

17 DATA 127,127,127,127,127,127,127,0 

20 FOR y=USR "a" TO USR "g"+7: READ x: POKE 
y,x: NEXT y 

30 DATA "LONDON",3,13,"MOSCOW",5,24,"BONN", 
7,17, "WASHINGTON" ,3,3, "BRASILIA" , 17, <4, “TOKYO" 
,9,28,"RIYADH",12,17,"CANBERRA",13,29,"PEKING 
", 9,25, “PRETORIA",17,14 

60 PRINT "This is the 3rd and -final s 

ection in the series of evolution prog 

rams."’ INK 5’“This one involves a nuclear wa 
r, where you can play the part o-f P.M. of any 
of 10 superpowers which may exist in 2002 
(the year in which this war takes place 

70 PRINT INK 6’"The object is to program c 
ruise missiles to home in on the enemies 

' capitals." 

80 PRINT INVERSE l’"Press any key to read 
more.": PAUSE 0: CLS 

90 PRINT "In 2002 the World is not very d 
ifferent from the previous 20 years, apart f 
rom new superpowerforces exist. South America 
has been over-run by Brazil and its capital 


226 Evolution 3 


is Brasilia."’ INK 5’"Japan has become a powe 
r-ful nation, and the Arabs have a -figh 

ting nation based around Riyadh. Also Aust 
ralia (k South A-frica are superpowers.” 

95 INPUT "Enter a skill level (30-100). 3 

0 is the hardest: ";s k 

97 IF sk < 30 OR sk>100 THEN GO TO 95 

100 PRINT '“In which capital do you want to 
be P.M. ? (You only need to typethe -first 2 c 
haracters.)“ 

101 RANDONIZE 

105 LET i%=" 

110 PRINT : FOR -f = l TO 10: READ a$,y,x: PRIN 
T a*,: NEXT i 

120 INPUT a*: IF LEN a$<2 THEN GO TO 120 

130 RESTORE 30: FOR f=l TO 10: READ b$,y,x: 
IF bS(i TO 2><>a$(l TO 2) THEN NEXT -f 

135 IF b*(l TO 2)< >a$(1 TO 2) THEN GO TO 12 

0 

136 LET v = y: LET u = x: LET e*="4": LET -f*(-f) = 
“X" 

137 RESTORE 30 

138 LET i = I NT <RND*10)+1: IF -f * ( i ) < > “X " THEN 
FOR -f = i TO i: READ b$,y2,x2: NEXT i : GO TO 

140 

139 GO TO 138 

140 LET sc=i: CLS : PRINT "The way you progr 

am your missileis by compass directions <ie n 
,s,w and e). The world map is divided int 

o squares, and each step o-f the program move 
s the missile 1 square." 

145 LET -f* ( i ) ="X" 

150 PRINT INK 5’“For example ""nnees"" move 
s the missile 2 squares up, 2 right and 1 

down."’ INK 6 ’ " I -f the missile goes o-f-f the 
screen at any side it will appear on 

the opposite side." 

151 PRINT INK 4’"The red square is your tar 
get" 

155 PRINT '"You must enter your program as 
quickly as possible . When it isready press F 

to launch a nuke." 

160 PAPER 0: INK 5: PRINT AT 21,0; "Press a k 


Evolution3 227 


ey to begin": PAUSE 0: CLS : GO SUB 9000 
170 PRINT AT y2,x2; INK 2; FLASH 1ii INK 
6; INK 0i PAPER 3!AT y,xi"E“: LET yl=y2: LET 
xl=x2: LET d$="/9" 

175 DIM c*(50): LET c=l 

180 LET c$=”“: PRINT INK 7;AT 21,0;"Enter p 
rograra after the tone." 

185 FOR -f = l TO 150: NEXT i : PRINT AT 21,05" 

" : BEEP .1,10 

190 LET C1=C 

195 FOR f = l TO sK: IF INKEY$= 11 11 THEN NEXT f 
200 IF INKEY$="N" THEN LET c$(c)="N": LET c 
= c+l 

210 IF INKEY*=*'S" THEN LET c$<c) = "S“ : LET c 
=c +1 

220 IF INKEY$="W" THEN LET <c)="W" : LET c 
= c + l 

230 IF INKEY$="E" THEN LET c$(c)="E": LET c 

235 IF INKEY*="F" OR c=51 THEN PRINT AT 21, 
0;“ “: BEEP .1 

,20: GO TO 600 

240 IF cl=c THEN GO SUB 500: GO TO 190 
250 PRINT INK RND*4+3;AT 21,(c-l AND c<33)+ 
(c-33 AND c>=33>5c$(c-i) 

255 IF c=32 THEN PRINT AT 21,05" 

260 BEEP .1,0 
270 GO TO 190 

500 PRINT AT y1,x15 OVER lid$; OVER 0;AT y2, 
x2 5 INK 2; 

510 IF y1< y THEN LET yl=yl + l: LET d*="C" 

520 IF y 1 >y THEN LET yl=yl-l: LET d$= M /?" 

530 IF x1< x THEN LET xl=xi + l: LET d$="5" 

540 IF x1>x THEN LET xl = xl-l: LET d %=“D" 

550 PRINT INK 3i FLASH li BRIGHT 1 5 AT yl,xl 
5 OVER l;d$ 

555 IF y1=y THEN IF xl=x THEN GO TO 900 
557 BEEP .06,25: BEEP .06,27 
560 RETURN 
600 LET c=l 

602 PRINT AT v,u; OVER lie$ 

605 FOR -f = l TO 3: PRINT AT y,x5 INK 65 FLASH 




228 Evolution 3 


15 PAPER 0; H F"5 FLASH 0;AT v,ai INK 5; OVER 
lie* 

610 LET v=v+<c3>(c)="S")-<c$<c)="N") : LET u=u 
+(cS(c)="E“)-(c$(c)= n W") 

615 LET e$=*": LET e*=e$+("C" AND c*<c)="S") 
+ <"-4" AND c$(c)="N“) + ( ,, fl” AND c$ (c ) = "E" ) + < "D" 
AND c$(c)="W") 

620 IF v=-l THEN LET v=20 
630 IF v-21 THEN LET v=0 
640 IF u=-l THEN LET u=31 
650 IF u*=32 THEN LET u=0 

660 IF v=y2 THEN IF a=x2 THEN GO TO 2000 

670 PRINT OVER 1; INK 7; BRIGHT 1;AT v,uie$ 

671 LET c=c + l : IF c<51 THEN IF c$(c)O l, N" A 
ND c*(c)<>"W“ AND c*(c)<>"E" AND c*(c)<>"S" T 
HEN LET c-l: GO TO 800 

672 IF c=51 THEN GO TO 800 

675 FOR i=20 TO 30: BEEP .001,i: NEXT i 
680 NEXT -f 
690 GO SUB 500 
700 GO TO 605 

800 PRINT OVER 1 i AT v,u;e$ 

810 LET c = l: LET v=y: LET u=x 
830 GO TO 180 

900 PRINT INK 7;AT 21,05"You have been dest 
rayed": FOR -f«l TO 20: PRINT AT y,x; INK RND* 
6+15 BEEP .05,-f*3: NEXT -f : INPUT "Want an 

other go? (Y/N) *; -f* 

905 PRINT AT 21,0;“ 

906 GO SUB 9000 

907 LET sc=l 

910 IF •f*<l)*"N" THEN STOP 

915 INPUT AT 0,05“Enter a skill level (30-10 
0). 30 is the hardest: ";sk 

917 IF sk < 30 OR sk >100 THEN GO TO 915 
920 INPUT AT 0,0; "Want to see the names?" ;-f* 
: IF -f * ( 1 ) = "N" THEN GO TO 950 
930 RESTORE 30: FOR -f = l TO 10: BEEP .05,-20: 
READ f$,y,x: PRINT INK RND-X-3 + 4 5 AT 21,05-f*!" 

" : FOR y=l TO 70: NEXT y: NEXT -f 
950 LET -f$=" 

960 INPUT AT 0,0;"Which capita1?"5 a*: IF LEN 




Evolution 3 229 


a*<2 THEN GO TO 960 

970 RESTORE 30: FOR -f = i TO 10: READ b$,y,x: 
IF b»(l TO 2)<>a$(l TO 2) THEN NEXT i: GO TO 
960 

975 LET -f ^ (-f ) = " X ■* 

980 LET c=i: LET c*="": LET v=y: LET u=x 
990 LET i=INT <RND*10)+i: IF i $(i)<>“X" THEN 
RESTORE 30: FOR -f = l TO i: READ b$,y2,x2: NE 
XT -f: LET -f* ( i ) = ,, X" : GO TO 170 
1000 GO TO 990 

2000 IF sc=9 THEN LET i=5: GO TO 2015 
2010 LET i=INT <RND*10)+l: IF +*(i)= n X" THEN 
GO TO 2010 

2015 LET sc=sc+i : LET -f* ( i ) = ,, X M : PRINT INK 7 
:AT 21,0;b$) H has been destroyed": FOR t=l TO 

4: FOR s=7 TO 0 STEP -1: PRINT AT y2,x2; INK 
s;“1”: BEEP .03,S*7: NEXT s: NEXT i 

2016 IF sc=10 THEN GO TO 4000 

2017 PRINT AT yl,xl| OVER i}d$ 

2020 PRINT INVERSE 1 ; AT y2,x2> “iT" : LET c-l: 
LET c$=““: LET v=y: LET u = x: RESTORE 30: FOR 
-f = l TO i: READ b*,y2,x2: NEXT i: PRINT FLASH 
1;AT y2,x2; INK 2;"i": LET yl=y2: LET xl=x2 
2025 PRINT AT 21,31}“ " 

2030 GO TO 180 

4000 PRINT INVERSE 1;AT y2,x2} u r": PRINT AT 

21 , 0 }* 

4005 INK 2: FLASH 1: BRIGHT 1: GO SUB 9000: I 
NK 5: FLASH 0: BRIGHT 0: PRINT AT 9,0}"CONGRA 
TULATIONS - YOU NOW RULE THE WHOLE WORLD <WE 
LL WHAT'S LEFT AFTER YOUR NUKES' WORK!) 

4010 FOR t=l TO 3: FOR g =12 TO 20 STEP 2: BEE 
P .07,g: NEXT g: FOR g=18 TO 10 STEP -2: BEEP 
. 07, g: NEXT g: NEXT -f 

4020 PRINT " P 

RESS Y TO TRY AGAIN, ELSE N....“ 

4025 IF INKEY$= M " THEN GO TO 4025 
4030 IF INKEY$="Y“ THEN GO SUB 9000: PRINT A 
T 21,0}“ GO 

TO 915 
4040 STOP 

9000 PRINT AT 0,0} n £EEEEEGGG6G£EE£E££££G3G£6£ 




230 Evolution 3 


££££££EE££££663G3££££££EGSG6G3S3SG£££££££E£££ 

633£££££66333336633333G633£63££££3EEEEEG33333 

366GG66GSGG6G£3G£££££££G££££GGGG63G66GGGG£££G 

GS3S£££££££££££SGG33GSSG33G6£££ U 

9010 PRINT U GG6GG6£££££££££3S3GGGGGGGGGGG£££G 

G6GSGEEEEEE M£3GG33G3SGGGGSG3££GS3S£££££££££G 

£GGG66GG66GGG£££££GGG£££££££££££GG333GGGG6GGG 

£G£££G66£££££££££GS3GGG3SGG3GGG3£G£££6£3£££££ 

££££GG£66GG3GGG£££££££££G£££££££££££ EGG £EG 

GEEGEEEGEEESGEEEEEEEEEGGGGGEGEEEGEEEEGEEGEE" 

9020 PRINT u £6GGG£££££GGGGG3S££££££££££££££££ 

EGG6G£££££GG336GE£EE£££££G£G£EEE3GGGG£EE££££G 

GdG£££££££GGGGGG££E£GGGG££E££E£6S6EG£E£££3GGG 

GGGG£££E6G££££££££GGG££££££££GGGGSG£££E£GG£££ 

££££££G££££££E££G£E£GG£££££G£££££££££££££££££ 

£££££££££££" 

9030 PLOT 255,8: DRAW 0,167: DRAW -255,0 
9040 RESTORE 30: FOR T=1 TO 10: READ a$,b,a: 
PRINT AT b,aJ ": NEXT -f: RETURN 



231 


Exocet 


It’s time to play the Falklands all over again. A group of enemy ships 
randomly make their way across the horizon, and it’s up to you to sink as 
many of them as possible by firing missiles using the zero key. A mobile 
sight is printed slightly below the line of the horizon. There are three 
sizes of enemy ships, and the smaller the target the more points you score 
for a hit. Occasionally the enemy’s electronic defence system will succeed 
in confusing your missile and deflecting it from its course. 

1 REM Exocet @ Robert ErsUine 1983 
5 60 SUB 9000 
10 GO SUB 4000 
15 GO SUB 1000 
20 GO SUB 1170 
30 LET hs=0 
40 RANDOMIZE 
50 INK 0 

100 FOR x = l TO < LEN S$-32> 

110 IF LEN S*<x TO LEN S*)>31 THEN PRINT I 
NK 0; PAPER 5 5 AT 10,0;S*<x TO x + 31) 

115 PRINT PAPER 1; INK 7JAT LIN,COL;" * 

120 IF INKEY*=“z“ AND FLAG=0 AND COL>0 THEN 
LET COL=COL-l: LET T=T-3 

130 IF INKEY*="x" AND FLAG=0 AND C0L<26 THEN 
LET C6L=C0L+l: LET T=T+8 

134 PRINT PAPER 1; INK 7;AT LIN,COL;"+" 

135 IF FLAG=1 THEN GO TO 170 

140 IF INKEY*<>"0" THEN GO TO 200 

150 LET L=0: LET D=l: LET FLAG=1: LET Y=127 

160 LET EX=EX-1 

170 PLOT INK 1; OVER l;Y,L 

172 LET LL=L! LET YY=Y 

175 BEEP .03,0 

176 IF L > = 112 THEN LET D=0 

177 IF RND >.8 THEN GO TO 190 

180 LET L=L+ < 8 AND D=l)-<8 AND D=0) 

182 LET Y=Y +(ABS <Y-T>/2 AND T>Y)-(ABS (Y-T) 
/2 AND T< Y) 

190 PLOT OVER 1;YY,LL 




232 Exocet 


195 IF L< =95 AND D=0 THEN 60 SUB 6000 

200 IF FLAG=0 THEN PAUSE 5 

202 IF EX< 0 THEN GO TO 3000 

205 NEXT x 

210 GO TO 3000 

1000 PAPER l: CLS : LET LIN=11: LET C0L=15: L 
ET T=123: LET FLAG=0: LET EX=10 
1100 FOR X=0 TO 10 
1120 FOR y=0 TO 31 

1130 PRINT PAPER 5; INK 1;AT x, y \ " “ 

1140 NEXT y 
1150 NEXT x 
1160 RETURN 
1170 DIM G$(10,6) 

1180 LET G$(l)= u /9 
1190 LET G*( 2 ) = "BC 
1200 LET G*(3)=" DEF " 

1210 FOR x=4 TO 10 
1220 LET GS(x>=" 

1230 NEXT x 
1235 LET Q$=" 

LET S$=Q* 

1240 FOR x=l TO 100 

1250 LET S$=S*+G*<INT <RND*10)+1) 

1260 NEXT x 

1270 LET sc=0: LET S*=SS+Q* 

1280 RETURN 

3000 PAPER 0: INK 5: CLS : PRINT AT 10 > 6! ,, Yqu 

r score was "; sc 

3010 LET sc=0: LET EX=10 

3020 PRINT AT 20,3;"Press any key to restart*' 
3025 INK 0 

3030 IF INKEY*="'* THEN GO TO 3030 
3040 GO SUB 1000 
3045 GO SUB 1170 
3050 GO TO 100 

4000 BORDER 0: INK 5: PAPER 0: CLS : PRINT AT 
1, 125 "EXOCET" 

4010 PRINT 

4020 PRINT "The object o-f this game is to '*, “ 
sink the enemy ships with Exocetmissi1es as t 
hey cross the ","horizon" 

4030 PRINT 

4040 PRINT '* z = move sight le-ft": PRINT 



Exocet 233 


4050 PRINT 


move sight right": PRINT 


4060 PRINT 
4070 PRINT 


0 = -fire missile": PRINT 
hit on D£F scores 10": PRINT 


4080 PRINT " hit on BC scores 20”: PRINT 

4085 PRINT " hit on 4 scores 30" 

4090 PRINT AT 21,4;"Press any key to start" 
4200 IF INKEY*=“" THEN GO TO 4200 
4210 RETURN 

6000 IF POINT <Y,88)=0 THEN GO TO 6060 
6010 IF S*(x+C0L)="4" THEN LET sc=sc+30 
6020 IF S$ ( x + COL TO x+ (COL + 1 ) ) =”BC" OR S*s(x+< 
COL-1) TO x+COL) = U BC" THEN LET sc=sc+20 
6025 IF SS ( x + COL TO x+ (COL+2) ) ="D£F U OR S*(x + 
(COL-1) TO x+(COL+1) > ="DEF* OR S$(x+(C0L-2> T 
O x+COL) D£F“ THEN LET sc*sc+10 

6030 RESTORE 6039 

6031 FOR z=l TO 15: BEEP .03,-20 

6032 PLOT Y,L: READ YY: READ LL: DRAW INK 2; 
YY, LL 

6033 NEXT z 

6039 DATA -4,4,-4,5,-3,6,-3,7,-2,8,-2,9,-1,10 

,0,11,1,10,2,9,2,8,3,7,3,6,4,5,4,4 

6050 LET S*=S$<1 TO x-l)+S$(x TO (x+(C0L-3))) 

+" “+S*(<x+(COL+3)> TO LEN S*> 

6060 LET FLAG=0 

6085 PRINT PAPER 5;AT LIN-2,C0L;" "iAT LIN-1 
,COLi" " 

6110 IF sc >hs THEN LET hs=sc 

6120 PRINT PAPER 5; INK 0;AT 0,0;"SCORE:";sc 
EXOS:";EX;" HIGH SCORE:";hs 
6130 RETURN 

9000 RESTORE 9000: FOR u=USR "a" TO USR "a"+4 
7 

9010 READ g 
9020 POKE u,g 
9030 NEXT u 

9040 DATA 0,0,0,0,0,0,16,255 

9050 DATA 0,0,0,0,1,39,255,127,0,0,0,0,128,23 
0,255,254 

9060 DATA 0,0,0,0,1,255,127,63,0,24,60,63,255 
,255,255,255,0,0,0,0,192,255,254,252 
9070 RETURN 



234 


Energy Field 


Y ou are at the edge of Time, closely pursued by a fleet of alien craft who 
are out to steal your ship’s power. However you have a trick or two up 
your sleeve. You have the capacity to guard the ends of the time tunnel 
by setting up energy fields at each of the four open ends of the system. If 
you attempt to set up a force field anywhere other than at the ends of the 
time tunnel, the force will feedback and destroy you. Likewise, if you set 
up a field at the end of an unoccupied tunnel you are finished. Passive 
cruiser commanders who allow too many aliens through will find then- 
power drained and the game over. 

1 BORDER 0! PAPER 0: INK 7: CLS 

2 REM @ PAUL STANLEY 

5 GO SUB 9800 

7 60 SUB 9840 

8 LET h=0 

10 60 SUB 8000 
20 60 SUB 9000 
25 PRINT AT 0,28;h 
30 OVER 1 

35 PRINT INK 3; AT 

39 IF 1i<=1 THEN 60 TO 7000 

40 LET p=p-.05: PRINT OVER 0;AT 0,0;s: LET 
g=l: 60 TO (INT <RND*4)+1)*100 

60 FOR d-1 TO p; PRINT INK 7;AT y,x|"/97" 

65 IF INKEY$="1" THEN LET x=x+l: LET y = y-l 

70 IF INKEYS= 11 2" THEN LET x = x + l: LET y=y+l 

75 IF y=-1 THEN LET y=21 

80 IF y=22 THEN LET y=i 

83 IF x = -i THEN LET x=*31 

87 IF x=31 THEN LET x-0 

90 PRINT INK 3iAT y,xS*'A'7" 

92 IF INKEY$= ,, 0" THEN IF g THEN 60 SUB 10 

00 

93 NEXT d 
95 RETURN 

100 LET o=s: FOR -f = l TO 4 
105 LET a=1 

110 PRINT AT 10+2*f,15; INK 5i< i) 


Energy Field 235 


115 60 SUB 60 
120 BEEP .04,+ 

130 PRINT AT 10+2*+ , 15;a*<+ ) 5 AT 11 + 2*+, 15, I 
NK 5;a$<+) 

135 GO SUB 60 
140 BEEP .04,+ 

150 PRINT AT 11+2*+,15;a$<+) 

160 NEXT + 

165 IF sOo THEN PRINT FLASH 1 ; AT 11+2*+, 1 
5 i INK .6} “ i/" : BEEP .1,-30: BEEP .1,-28: BEEP 
.1,-26: BEEP .1,-28: BEEP .1,-30: PRINT AT 11 
+ 2*+ , 15; INK 75 V* 

167 IF s=d THEN LET 1i=1i-.2: PRINT AT 21,2 

7; over 0;int li;" 

170 GO TO 39 

200 LET o=s: FOR +=1 TO 4 
205 LET a=2 

210 PRINT AT 11-2*+,165 INK 3;a$<+) 

215 GO SUB 60 
220 BEEP .04,+ 

230 PRINT AT 11-2*+,16;a*(+);AT 10-2*+,16; I 
NK 3;a*<+) 

235 GO SUB 60 
240 BEEP .04,+ 

250 PRINT AT 10-2*+,16;a*(+) 

260 NEXT + 

265 IF sOo THEN PRINT FLASH 1; AT 10-2*+, 1 
65 INK 6i "J m : BEEP .1,-30: BEEP .1,-28: BEEP 
.1,-26: BEEP .1,-28: BEEP .1,-30: PRINT AT 10 
-2*+,165 INK 7; “J m 

267 IF s—o THEN LET 1i=1i-.2: PRINT AT 21,2 
7; OVER 0!INT 1i5" 

270 GO TO 39 

300 LET o=s: FOR +=1 TO 5 
305 LET a=3 

310 PRINT AT 10,15-2*+} INK 45b*<+) 

315 GO SUB 60 
320 BEEP .04,+*6 

330 PRINT AT 10,15-2*+5b*(+);AT 10,14-2*+; I 
NK 4;b#(+ J 
335 GO SUB 60 
340 BEEP .04,+*6 
350 PRINT AT 10,14-2*+5b*<+) 

360 NEXT + 



236 Energy Field 


365 IF sOo THEN PRINT FLASH HAT 10,14-2* 
■M INK 6i“J": BEEP .1,-30: BEEP .1,-28: BEEP 
.1,-26: BEEP .1,-28: BEEP .1,-30: PRINT AT 10 
, 14-2*-f ', INK 75 *V" 

367 IF s=o THEN LET 1i=li-.2: PRINT AT 21,2 
7i OVER 05INT 1i5" 

370 60 TO 39 

400 LET o=s.' FOR -f*=i TO 5 
405 LET a=4 

410 PRINT AT 11 , 16+2*f 5 INK 65b*(-f) 

415 GO SUB 60 
420 BEEP . 04 , -f *6 

430 PRINT AT 11, 16 + 2** 5 b$ < -f ) 5 AT 11,17+2**5 I 
NK 6 5 bS(-f) 

435 GO SUB 60 

440 BEEP . 04, -f *6 

450 PRINT AT 11, 1 7 + 2*-f 5 b$ ( i ) 

460 NEXT i 

465 IF sOo THEN PRINT FLASH 1 5 AT 11,17 + 2* 
-ft INK 65 “J“: BEEP .1,-30: BEEP .1,-28: BEEP 
.1,-26: BEEP .1,-28: BEEP .1,-30: PRINT AT 11 
,17 + 2*f5 INK 75 "J" 

467 IF s=o THEN LET li=li-.2: PRINT AT 21,2 
7i OVER 05INT 1i5 “ 

470 GO TO 39 

1000 IF x<6 THEN GO TO 1100 

1010 IF x >9 AND x<22 THEN GO TO 1200 

1020 IF NOT x >24 THEN GO TO 2000 

1030 IF x >29 OR y<2 OR y>19 THEN GO TO 2000 

1040 FOR q-2 TO 19: PRINT PAPER 3|AT q,27|" 

“: NEXT q 

1050 BEEP .03,-10: BEEP .03,-13: BEEP .03,-15 
: BEEP .03,-10 

1060 FOR q=2 TO 19: PRINT PAPER 0}AT q,275" 
“: NEXT q 

1065 IF a< >4 THEN GO TO 2000 
1070 LET s=s+20 

1080 LET g=0 

1090 RETURN 

1100 IF x<l OR y< 2 OR y>19 THEN GO TO 2000 
1110 FOR q=2 TO 19: PRINT PAPER 35AT q,2j" 

": NEXT q 

1120 BEEP .03,-10: BEEP .03,-13: BEEP .03,-15 
: BEEP .03,-10 



Energy Field 237 


1130 FOR q=2 TO 19: PRINT PAPER 0 }AT q,2;“ 
NEXT q 

1135 IF a< >3 THEN GO TO 2000 
1140 LET 3=5+20 
1150 LET g=0 
1160 RETURN 

1200 IF y>10 THEN GO TO 1300 

1210 IF y<1 OR y >3 THEN GO TO 2000 

1220 FOR q=11 TO 20: PRINT PAPER 3;AT l,qS“ 

“ ; AT 2, qi “ "SAT 3 , q ; " : NEXT q 

1230 BEEP .03,-10: BEEP .03,-13: BEEP .03,-15 

: BEEP .03,-10 

1240 FOR q=i1 TO 20: PRINT PAPER 0;AT l,q5“ 

“;AT 2,qi “ “5 AT 3,q;" ■ : NEXT q 
1245 IF a<>2 THEN GO TO 2000 
1250 LET s=s+20 
1260 LET g=0 
1270 RETURN 

1300 IF y >20 OR y<18 THEN GO TO 2000 
1310 FOR q=11 TO 20: PRINT PAPER 3> AT 18,qt" 
*iAT 19,q;“ “;AT 20,q5" “: NEXT q 

1320 BEEP .03,-10: BEEP .03,-13: BEEP .03,-15 
: BEEP .03,-10 

1330 FOR q=l1 TO 20: PRINT PAPER 05 AT 18,q!" 

*iAT 19j qj“ “j AT 20,q;“ “: NEXT q 
1335 IF a< >1 THEN GO TO 2000 
1340 LET s=s+20 
1350 LET g=0 
1360 RETURN 

2000 PRINT AT y,xi "HI" 

2010 FOR r=y TO 21 

2020 PRINT AT r,x-l; INK 5j "JJV" 

2030 BEEP .001,r 

2040 PRINT AT r,x-l; a JJJ a 

2050 NEXT r 

2060 LET 1i=1i-1: PRINT OVER 0;AT 21,27JINT 
1 i ; " “: IF 1i< = 1 THEN GO TO 7000 

2065 PRINT AT y,xj "HI" 

2070 RETURN 

7000 FOR -f = l TO 60: PRINT OVER 0i AT 10,8j IN 
K -f/9i INVERSE 1 ; “ G A M E 0 V E R": BEEP .00 
1,-f: NEXT -f 

7005 IF s>h THEN LET h=s 
7100 PRINT OVER 0iAT 21,2; 


INVERSE 1!"PRESS 



238 Energy Field 


ANY KEY TO PLAY AGAIN" 

7200 IF INKEY$<>"" THEN RESTORE : CLS : OVER 
1 : GO TO 10 
7300 GO TO 7200 

3000 FOR -f =USR "a" TO USR M j"+7 
8010 READ x: POKE i , x: NEXT -f 

8020 DATA 40,BIN 01010100,BIN 10111010,124,BI 

N 10111010,BIN 01010100,40,0 

8030 DATA 0,16,40,BIN 01010100,40,16,0,0 

8040 DATA 0,0,0,24,24,0,0,0 

8050 DATA 0,0,0,16,0,0,0,0 

8060 DATA 255,195,189,189,189,189,195,255 

8070 DATA 0,62,54,42,54,62,0,0 

8080 DATA 0,0,28,28,28,0,0,0 

8090 DATA 96,240,249,239,249,240,96,0 

8100 DATA 6,15,159,247,159,15,6,0 

8110 DATA BIN 11011010,33,76,195,24,BIN 01100 

101,BIN 10010011,BIN 01100100 

8250 LET x=i: LET y=i 

8300 LET a DCBA" 

8350 LET b 9- u DCOF£ u 
8400 LET s—0 
8410 LET 1 i=3: LET p = 5 
8500 RETURN 

9000 OVER 0: PLOT 126,93: DRAW 4,0: DRAW 0,-4 
: DRAW 4,0: DRAW 0,-4: DRAW -4,0: DRAW 0,-4: 
DRAW -4,0: DRAW 0,4: DRAW -4,0: DRAW 0,4: DRA 
W 4,0: DRAW 0,4 

9010 DRAW -40,77: DRAW 84,0: DRAW 0,-25: DRAW 
-84,0: DRAW 0,25: PLOT 86,145: DRAW 40,-52: 
DRAW 4,0 

9020 DRAW 40,52: DRAW 0,25: DRAW -40,-77 
9030 PLOT 126,81: DRAW -40,-77: DRAW 84,0: DR 
AW 0,25: DRAW -84,0: DRAW 0,-25: DRAW 0,25: D 
RAW 40,52: DRAW 4,0: DRAW 40,-52: DRAW 0,-25: 
DRAW -40,77 

9040 PLOT 122,89: DRAW -107,71: DRAW 30,0: DR 
AW 0,-146: DRAW -30,0: DRAW 0,146: DRAW 30,0: 

DRAW 77,-71: DRAW 0,-4: DRAW -107,-71: DRAW 
30,0: DRAW 77,71 

9050 PLOT 134,89: DRAW 107,71: DRAW -30,0: DR 
AW 0,-146: DRAW 30,0: DRAW 0,146: DRAW -30,0: 

DRAW -77,-71: DRAW 0,-4: DRAW 107,-71: DRAW 
-30,0! DRAW -77,71 



Energy Field 239 


9500 RETURN 

9800 FOR f = l TO 7: FOR G=0 TO F: PRINT INK G 
; AT f , f *25 "ENERGY FIELDS": BEEP .03,G: NEXT G 
; NEXT F 
9835 RETURN 

9840 PRINT AT 10,0;“Guard the tube with your 
craft by setting up energy shields at the 4 
open ends of the system. Attempting to place 
a field at any place other than the end 
will result in your destruction." 

9850 PRINT "Setting one up at a tube not c 
ontaining an enemy will result in destruction 
also.” 

9855 PAUSE 0: CLS : GO SUB 9800 
9860 PRINT AT 9,0; "Move with l(up) be 2(down) 
but remember that you move right at the sam 
e time and going off the screen will place yo 
u on the opposite side." 

9870 PRINT "Place an energy field at a tube m 
outh with 0."’"Letting an enemy past or self- 
destruction results in power loss and if 

this is too great then the game is over."’ 

’ INVERSE 15 OVER 1;"Press a key to start": P 
AUSE 0: CLS 
9880 RETURN 



240 


Drag Racer 


This is a simulation of a drag race. The object of the game is to complete 
the quarter mile course in the shortest possible time. You have four gears 
and must determine the optimum moment for changing up. If you 
change too early, your revs will fall too low and you will lose valuable 
time; if you spend too much time in high revs you’ll probably blow your 
engine. The rear end ratio of the car is progressively increased with each 
succeeding game, and the right moment to change gear becomes 
increasingly hard to judge. 

1 REM Drag Racer 0 R.ErsUine 1983 
5 60 SUB 4000 
10 GO SUB 9000 
15 60 SUB 9150 
20 LET g=l 

100 LET I-CODE INKEY* 

110 IF 1-109 THEN LET a=a+l 

120 IF I>48 AND I<53 THEN LET g-I-48 

125 IF t<3 THEN LET rpm=FN a<x): 60 TO 140 

130 LET rpm-FN b(x) 

140 IF RND>(rpm-6000)/1000 THEN 60 TO 160 

150 60 TO 3000 

160 LET os-ns 

1 70 LET op-np 

180 LET tq=FN c<x) 

190 LET tqi—17 
200 LET ns=FN d < x ) 

210 LET np=FN e(x> 

240 LET t=t+l 
260 LET a=FN i (x) 

270 LET x-48*SIN a 
280 LET y=48#C0S a 

285 IF t>i THEN PLOT 152,56: DRAW OVER l|x 
*»yy 

290 PLOT 152,56; DRAW OVER Ux,y 
300 LET xx = x: LET yy=y 
310 LET a=FN g(x) 

320 LET n=48*SIN a 
330 LET o=48*C0S a 

340 IF t>i THEN PLOT 49,56: DRAW OVER linn 



Drag Racer 241 


, DO 

350 PLOT 49,56: DRAW OVER l;n,o 
360 LET nn=n: LET oo=o 

365 PRINT PAPER 5; INK 0;AT 1inl,col 15 "_" 
400 LET coll=col1 + INT (<np-op)/cl) 

410 IF col 1 >31 AND linl<8 THEN LET coll=*0+< 
col 1-31): LET 1inl = linl + 1 
460 IF 1in1<8 THEN PRINT PAPER 5; INK 0;AT 
1 ini,coll 5"4" 

500 IF np<1320 THEN GO TO 100 
2000 LET t=FN h < x ) 

2005 IF bt=0 THEN LET bt = t 
2010 IF t<bt THEN LET bt = t 
2030 PRINT AT 0,0;"Time "Jt;" seconds" 

2040 PRINT "Best time: " ibtj" seconds" 

2050 PRINT "Maximum speed: "ins;" mph" 

2055 FOR x=l TO 1000: NEXT x 

2060 PRINT "Press any key to restart" 

2070 IF INKEY$="" THEN GO TO 2070 
2090 LET gr=gr+.l: IF gr>4.1 THEN LET gr=4.1 
1 

2095 GO SUB 9000 

2096 GO SUB 9310 
2100 GO TO 20 

3000 PRINT FLASH 15 PAPER 2; INK 6;AT linl.c 
olli"/J"5AT 0,3; "Engine blown": GO TO 2055 
4000 PAPER 0: INK 5: BORDER 0: CLS 
4010 PRINT AT 0,10;“Drag Racer” 

4020 PRINT 

4030 PRINT "In this drag racing simulation ", 
"you must try to cover the ","quarter mile in 
the shortest ","possible time. The only cont 
rolsyou need are the gears which ","must be c 
hanged at the optimum ","moment.": PRINT 
4040 PRINT "At the start you are in first 
gear and you must watch the rpm counter and d 
ecide when to ","change into second. At over 
","6000 rpm there is a high ",“probabi1ity o 
f the engine “,“b1owing.": PRINT 
4050 PRINT "With each succeeding attempt “,"t 
he rear end ratio is increased slightly which 
makes the game ","progressively more difficu 
It.": PRINT 

4060 PRINT "Try not to change gear too late o 



242 Drag Racer 


r too early. The gear keys arel,2,3 and 4. 
Good Lack." 

4070 PRINT : FOR x = l TO 1000: NEXT x 
4080 PRINT "Press any key to start" 

4085 IF INKEY*="" THEN GO TO 4085 

4090 RETURN 

8000 FOR x=0 TO 7 

8010 PRINT PAPER 5|AT x,0|" 


8020 NEXT x 

8030 FOR x=l12 TO 168 STEP 8 
8040 PLOT 0, x: DRAW INK 0;255,0 
8050 NEXT x 
8060 RETURN 
9000 DIM g(4) 

9005 BORDER 5: PAPER 0: INK 7: CLS 

9010 LET g <1)=4 

9020 LET g < 2)=2.5 

9030 LET g(3)=1.5 

9040 LET g < 4)=1 

9050 LET t=0: LET np=0: LET ns=np 

9070 LET mph=0 

9080 LET rpm=0 

9090 CIRCLE 152,56,48 

9100 CIRCLE 49,56,48 

9110 PRINT AT 14,5; "RPM" 5 AT 14 , 17 5 11 MPH " 5 AT 10 
,26!"Drag"JAT 19,26!"Racer" 

9120 PRINT AT 14,13!"135"iAT 14,23!“45"!AT 9, 
19!"0";AT 20,18;"90" 

9130 PRINT AT 9,6;"0";AT 14,10! "17"5 AT 14,0!" 
52"!AT 20,5!"35" 

9140 GO SUB 8000 
9145 RETURN 

9150 DEF FN a < x ) =>4200# (g < g) /g < 1) ) 

9160 DEF FN b(x)=ns*gr*g<g)*con/circ 

9170 DEF FN c <x) = <ci-H-rpm^) + <c2#rpm / '2) + (c3*rp 


9180 

9190 

9200 

9210 

9220 

9250 


DEF FN d (x)=os+(tq/tql) 

DEF FN e ( x ) =op + ns* ( 5280/60 "'2) 

DEF FN f (x) = (ns*2)/180#PI 
DEF FN g<x)=(rpm/19.5)/180*PI 
DEF FN h(x)=t +(1320-op)/<np-op)-1 
LET con=63360 



Drag Racer 243 


9260 

9270 

9280 

9290 

9300 

9310 

9320 

9330 

9340 

9350 

9999 


LET c irc = 4523.893421 
LET cl=-l.8953E-9 
LET c2=1.02157E-5 
LET c3=.015752 

LET b t =0: LET gr=3: LET cl=5.176 

LET 1in1=0: LET coll=0 

RESTORE : FOR x=USR "a" TO USR "a" 

READ n: POKE x,n 

NEXT x 

DATA 0,0,0,0,224,255,227,255 
RETURN 


7 



244 


Moonlander 


This is an up-market real-time lander program which gives you an 
opportunity to grapple with the problems which face a space-lagged 
cruiser commander returning home after a long haul. The object of the 
exercise is to land your craft on the chillingly small landing-pad at the 
bottom of the screen. Precision is the name of the game, because if your 
rate of descent is greater than -5 you and your crew are gonners. A word 
of warning: if you over-fire your rockets you’ll disappear into hyperspace 
until returning back on screen, plummeting to your doom unless you’ve 
been doing some nifty blind flying to slow your descent. 

10 REM Moon Lander @ Robert Erskine 1983 

20 60 SUB 8000 

80 GO SUB 9000 

90 IF E=0 THEN GO TO 150 

100 LET m=ml: LET ml=in-Fl 
110 LET H1=H: LET H=(H+V)-.3i 
120 LET V=V +<(T/Fl)#(LN (m/ml)))-1.62 
130 LET F=F-F1 
140 GO TO 175 
150 LET ml=m: 

160 LET H1=H: LET H=(H+V)-.8i 
170 LET V=V-1.62 
175 LET coll=col 

180 IF col>0 AND RND >.5 THEN LET col=col-l 
185 IF col<31 AND RND>.5 THEN LET col=col+l 
190 PRINT AT 0,0;"Height ";INT H; u 

200 PRINT "Velocity ";INT V!" 

210 PRINT "Fuel ";F;" 

220 IF INKEY$="o" THEN LET E=0 
230 IF INKEY$="i" THEN LET E=1 
232 IF INKEY$="z" AND col>0 THEN LET col=co 
1-1 

234 IF INKEY*="x" AND col<31 THEN LET col=c 
ol +1 

240 IF H >2000 OR H<1 THEN GO TO 270 

250 PRINT ;AT 20-(HI/100) ,col 15“ ”5 INK 5;AT 

20-(H/100) ,c o1; "A" 

260 IF E=1 THEN PRINT AT 21-(HI/100),co11;" 




Moonlander 245 


"j INK 2;AT 21-(H/100),col; "B" ;AT 21-(H/100) 

,col;" " 

270 PRINT INK 7;AT 20,0;"_ 

_" 5 INK 3; AT 20, 15; 

300 IF F=0 OR H<=0 THEN GO TO 2000 
310 GO TO 90 

2000 IF F=0 THEN PRINT FLASH 1;AT 10,10;"OU 
T OF FUEL" 

2010 IF H<=0 AND V<-5 THEN PRINT FLASH 1;AT 
11,8!"YOU HAVE CRASHED": GO TO 3000 
2020 IF H< =0 AND V>-6 THEN PRINT FLASH 1;AT 
11,85"YOU HAVE LANDED": PRINT AT 20-<Hl/100) 

, Call;" ": PRINT INK 5; AT 20 ,col;"/5" : INK 0 

2025 IF H< =0 AND V>-6 AND col=15 THEN PRINT 
PAPER 6; FLASH 1;AT 12,5;"IN THE CORRECT PLA 

CE" 

2026 IF H<=0 AND V>-6 AND col 015 THEN PRINT 
PAPER 6; FLASH 1;AT 12,6;"IN THE WRONG PLAC 

E" 

2030 INK 7: PRINT AT 15,A;"PRESS ANY KEY TO R 
ESTART" 

2040 IF INKEY*="" THEN GO TO 2040 
2050 GO TO 80 

3000 PRINT AT 20-(HI/100) ,col 1; " "; INK 5;AT 

20,coll; "C" 

3010 FOR x = l TO 5 
3020 BEEP .03,x-20 
3030 NEXT x 
3040 GO TO 2030 

8000 BORDER 0: PAPER 0: INK 6: CLS : PRINT AT 
2,4;"MOON LANDER" 

8020 PRINT 

8030 PRINT "This is a real-time moon lander g 
ame in which you must land the lunar module o 
n the small purp1e1 anding pad. You must land 
in ", "the correct place at a rate o-f ", "desc 
ent not -faster than -5. ” 

8040 PRINT 

8050 PRINT "Use the -folowing command keys:" 
8060 PRINT 

8070 PRINT "z = move le-ft": PRINT 
8080 PRINT "x = move right": PRINT 
8090 PRINT "i = motor on": PRINT 
8100 PRINT "o = motor o-f-f": PRINT 




246 


Moonlander 


8110 PRINT "Press any key to start" 

8120 IF INKEY*="" THEN GO TO 8120 

8130 RETURN 

9000 LET H=2000 

9010 LET V=-20 

9020 LET m=1378: LET ml=m 

9030 LET T=4800 

9040 LET FI=2 

9050 LET F=373 

9060 LET E=1 

9080 LET co1=15 

9090 LET y=8 

9200 PAPER 0: BORDER 0: CLS 
9210 FOR x=l TO 30 

9220 PLOT INK 7;INT (RND*255),INT <RND*165)+ 
10 

9230 NEXT x 

9290 RESTORE : FOR x=USR "a" TO USR "c"+7 
9300 READ n: POKE x,n 
9310 NEXT x 

9320 DATA 60,126,219,255,255,126,189,129,24,6 
0,60,60,24,24,0,0,0,0,0,0,24,60,126,255 
9330 PRINT INK 3;AT 20,15;"_" 

9340 RETURN 




247 

Anagrammatic 


This is a simple anagram jumbler. There are few things more infuriating 
than staring blankly at crossword clues, unable to de-jumble the letters. 
This little program will hopefully get the old brain ticking again with 
some fresh ideas on how to unscramble the problem. 

10 REM **ANAGRAMATIC#* A SIMPLE 

ANAGRAM SOLVER by H.NYWALW 

20 POKE 23658,255: REM -forces caps shift 
30 BORDER 5: PAPER 5: INK 0: CLS 
40 PRINT TAB 10; BRIGHT 1; INVERSE 15 11 ANAGR 
AMATIC“ 

50 PRINT : PRINT " IF YOU ARE A CROSSWORD A 
DDICT, THEN YOU WILL KNOW THE PROBLEMS" 

60 PRINT “OF TRYING TO REARRANGE LETTERS.” 
70 PRINT : PRINT “ FOLLOW THE INSTRUCTIONS 
AND THEN SIT BACK AND WATCH THE " 

75 PRINT "SCREEN AS EVERY POSSIBLE " 

80 PRINT "COMBINATION RUNS UP BEFORE YOUR V 
ERY EYES.THE AIM IS NOT TO LOOKAT EVERY WORD 
GROUP,BUT SIMPLY “ 

85 PRINT “TO GLANCE AT THE SCREEN OCCASIO-N 
ALLY AND YOU MAY WELL GET SOME" 

90 PRINT "INSPIRATION." 

95 PRINT : PRINT “ALTERNATIVELY,PUT IN A PR 
INTER SUBROUTINE FOR HARD COPY." 

100 PRINT "PRESS ANY KEY TO START." 

104 IF INKEY$= “ " THEN GO TO 104 
110 BORDER 4: PAPER 4: INK 0: CLS 
120 PRINT TAB 4i" ANAGRAMATIC 

130 PRINT ’’"TYPE "5 INVERSE 1 I “ONLY"J INVER 
SE 05" THOSE LETTERS WHICH","ARE TO BE REARRA 
NGED.DO NOT","INPUT ANY LETTERS WHOSE POSITIO 
NIS KNOWN." 

140 INPUT A*: IF A*="" THEN GO TO 140 

150 PRINT 

160 LET L=LEN A* 

170 PRINT "ARE ANY LETTERS/SPACES KNOWN?","P 
RESS Y(YES) OR N(NO)" 

175 LET ZS=INKEY*: IF Z*=" " 


THEN GO TO 175 




248 Anagrammatic 


180 IF Z*="N“ THEN GO TO 2*40 

181 IF Z%< > " Y" THEN GO TO 175 

190 PRINT “TYPE IN THE KNOWN ORDER AS PER E 

XAMPLE.“: PRINT "E.G. ’-D-F- -EE’" 

200 INPUT K$: LET W=L 

210 LET T=0: FOR J=1 TO LEN K*: IF K$(J)="-“ 
THEN LET T=T+1 

220 NEXT J: IF T< >L THEN GO SUB 1000: GO TO 
200 

230 GO TO 270 

240 LET K*=““: FOR J=1 TO L: LET K*=K$+"-": 
NEXT J 

250 INPUT "NUMBER OF LETTERS TO BEGIN",W 
260 IF W<1 OR W>L OR WOINT W THEN GO SUB 1 
000: GO TO 250 

270 DIM B$(L): DIM C*(L): DIM Q(L) 

280 PRINT --" 

290 GO SUB 500 
300 FOR J=W TO L 

305 PRINT AT 21,0i" n : POKE 23692,-1 
310 LET K=1 
320 LET Q(K)=1 

330 IF B3s<Q<K) )=■=" " THEN GO TO 440 

340 LET C*<K)=B$(Q(K)): LET B*(Q(K))»“" 

350 LET K=K+1 

360 IF K<=J THEN GO TO 320 

370 LET A“1 

380 FOR S-l TO LEN K* 

390 IF K*<S)=“-" THEN PRINT C$<A)i: LET A=A 
+ 1 : GO TO 410 
400 PRINT K$(S)i 
410 NEXT S: PRINT 
420 LET K=J 

430 LET B*(Q(K))=A*(Q<K)) 

440 LET Q(K)“Q < K)+1 

450 IF Q <K)< =L THEN GO TO 330 

460 LET K=K-1 

470 IF K>=*1 THEN GO TO 430 
480 NEXT J 

490 PRINT : PRINT "THAT’S ALL THE POSSIBLE A 
NAGRAMSWRITTEN. TYPE RUN FOR ANOTHER GO.*': STO 
P 


500 FOR N=1 TO L 




Anagrammatic 249 


510 LET B*<N)=A$<N): NEXT N: RETURN 
1000 PRINT BRIGHT 1; FLASH 1}"E R R 0 R! 
LEASE REDO.RETURN 

9999 PAUSE 0: BORDER 0: PAPER 0: INK 6: CLS 







250 


Stellar Run 


On a routine run into hyperspace, you suddenly come upon a new 
universe. Instantly your cruiser is confronted with a series of mazes, 
obstacles and tunnels as you struggle to chart new horizons. As an 
experienced commander, you are well aware that any contact with the 
numerous meteors, rock walls or barriers will lead to your instant 
destruction. You will need to think fast and use your missiles to blast a 
hole through obstacles. So stand by, finger on the keyboard.. . Good 
luck! 

1 REM STELLAR RUN ORIGINAL 

VERSION @ H WALWYN SPECTRUM VERSION <2 D 

PARKER 

2 RANDOMIZE : CLS : PRINT AT 10,10i FLASH 
l;-STELLAR RUN": GO SUB 8000: BORDER black: 
GO SUB 7000: GO TO 6000 

100 REM SCREENS FOR UDG 

110 LET l=CODE SCREENS <y+l,x): IF i THEN R 
ETURN 

120 POKE 23606,PEEK 23675: POKE 23607,PEEK 2 
3676-1 

130 LET i=CODE SCREENS (y+l,x)+112 
140 POKE 23606,0: POKE 23607,60 
150 RETURN 
1000 REM MAIN LOOP 
1010 POKE 23692,255 

1020 LET e=e+ee*RND: GO TO 1000+d#100 
1100 REM D=1 

1110 LET dS = aS < TO SIN <e)*11 + 13)+CHRS 20 + CHR 
S 0 + bS( TO 20)+aS: IF e>15 THEN BEEP .i,e/3: 
LET d=2 

1120 GO TO 2000 
1200 REM D=2 

1210 LET dS=aS( TO SIN (e)*11+13)+CHRS 20+CHR 
S 0 + bS< TO 16)+ as: IF e >30 THEN BEEP .l,e/3: 
LET d=3 

1220 GO TO 2000 
1300 REM D=3 

1310 LET dS=aS( TO SIN <e)+COS <e*.9>*4.5+12) 



Stellar Run 251 


+ CHR$ 20+CHR$ 0 + b$( TO 16>+a$: IF RNDC.03 THE 
N LET d$=a$ 

1320 IF e>45 THEN BEEP .l,e/3: LET d=4 
1330 GO TO 2000 
1400 REM D=4 

1410 LET n$=CHR$ 20+CHRS 0+b$: IF RND<.08 THE 
N LET n$=CHR$ 20+CHRS 0+1$ 

1420 LET d$=a$( TO (SIN <e)+COS (e*i.1))*4.5+ 
12)+n$( TO 16)+a$ 

1430 IF e >60 THEN BEEP .l,e/3: LET d=5 
1440 GO TO 2000 
1500 REM D=5 

1510 IF RND >.6 THEN LET d$=CHR$ 20+CHRS 0 + b$ 
: GO TO 1530 

1520 LET d$=CHR$ 20+CHR$ 0+c$(INT <RND*40+1) 
TO 40) 

1530 IF e >75 THEN BEEP . i,e/3: LET d = 6 
1540 GO TO 2000 
1600 REM D=6 

1610 LET d$=a$( TO SIN (e)*12+14)+CHR$ 20+CHR 
$ 0+b$( TO 14)+a$: IF e>90 THEN BEEP .l,e/3: 
LET d=7 

1620 GO TO 2000 
1700 REM D=7 

1710 LET d$=a$( TO (SIN (e)+COS <e#5.1))*4.5+ 
12)+ CHR$ 20+CHR$ 0+b$( TO 16)+a$: IF e>105 TH 
EN BEEP .1,e/3: LET d=8 
1720 GO TO 2000 
1800 REM D=S 

1810 IF RND >.25 THEN LET d$=CHR$ 20+CHR5 0 + b 
$: GO TO 1830 

1820 LET d$=i$(INT (RND*2+1) TO 30) 

1830 IF e >120 THEN BEEP .l,e/3: LET d=9 
1840 GO TO 2000 
1900 REM D=9 

1910 IF RND >.5 THEN LET d$=CHR$ 20+CHR$ l+b$ 
: GO TO 1930 
1920 LET d$=a$ 

1930 IF e > = 135 THEN GO TO 3000 
2000 REM PRINT 

2010 IF LEN d$< 32 THEN LET d$=d$ + a$ 

2030 PRINT AT 21,31) INK d) PAPER 9i"BB" id$( 
TO 32 ) ) AT 0,0) INK 9 ) " MISSILES= " )-f g) AT 0,13)" 




252 Stellar Run 


LEVEL=“id;AT 0,22i"LYEARS=";INT e 
2100 REM CHECK IF KEY PRESSED 

2110 LET k=CODE INKEYS: IF m<0 THEN LET m=0 

2120 BEEP . 02, m*10: LET -fg = -fg+l 

2130 IF NOT k THEN LET m=m-2: GO TO 2300 

2140 IF k< >48 THEN GO TO 2200 

2150 IF -f g< 2 THEN GO TO 2300 

2160 LET f = 1 : LET Tg=-fg-2 

2170 IF fg<0 THEN LET -fg=0 

2180 GO TO 2300 

2200 REM KEY PRESSED 

2210 LET m=m+1: IF m>3 THEN LET m=3 

2220 IF k=53 THEN LET x=x-m: IF x<l THEN LE 

T x = l 

2230 IF k=56 THEN LET x=x+m: IF x>30 THEN L 
ET x=30 

2240 IF k=54 THEN LET y=y+m: IF y>14 THEN L 
ET y=14 

2250 IF k=55 THEN LET y=y-m: IF y<1 THEN LE 
T y = 1 

2300 REM DISPLAY AND CHECK HIT 
2310 IF -f g >9 THEN LET -fg=9 

2315 GO SUB 100: IF i>144 THEN GO TO 4000 

2320 PRINT AT -fy-l,-fx; PAPER 8; INK 9;" ” ; AT 

■f y - 2 , -f x ; PAPER 8} INK 9; “ “ ; AT y,x! PAPER 8; 

INK 9is$: LET -f x = x : LET -fy=y 

2330 IF -f<l THEN GO TO 1000 

2340 IF -f =2 THEN GO TO 2355 

2350 LET -f =2 

2355 BEEP .01,d 

2360 LET r=x*8+3: LET s=(21-y)*8: PLOT BRIGH 
T li INK red;r,s: DRAW BRIGHT li INK red; O V 
ER 1;0,-50: PAUSE 5: PLOT BRIGHT 0; INK red; 
r,s: DRAW BRIGHT 0; INK red; OVER l;0,-50 
2370 LET t=(r-4)/S: FOR v=y+l TO y+7: IF SCRE 
EN* (v, t) < > 11 M THEN PRINT AT v,t; PAPER 8;" 
": BEEP .25,-10 

2380 NEXT v: LET f=0: GO TO 1000 
3000 REM YOU’VE MADE IT 

3010 INK red: PAPER yellow: BORDER blue: CLS 
3020 FOR k=0 TO 48: BEEP .01,k: BEEP .01,48-k 
: NEXT k 

3030 FOR k=0 TO 7: BEEP .01,k: PRINT AT k+5,3 
5 INK 3-ki PAPER k+l;"WELL DONE! YOU’VE MADE 




Stellar Run 253 


IT!": BEEP .01,20-k: NEXT k 
3040 GO TO 4070 
4000 REM SHIP HIT 
4005 PRINT AT -f y- 1 , -f x ; " " 

4010 FOR k=0 TO 7: BEEP .02,-1: PRINT AT y,x| 
X*(k+1): BEEP .02,1: NEXT k 

4020 INK black: PAPER yellow: CLS : BORDER bl 

4030 PRINT AT 6,11; FLASH 1DESTROYED!" 

4040 PRINT AT 8,7;” You got as -far as" 

4050 PRINT AT 10,14;INT (e*10)/10 
4060 PRINT AT 12,10;"light years" 

4070 PRINT AT 14,6;“ANOTHER GAME? <y/n)" 

4080 LET k$=INKEY*: IF k*="y" THEN GO TO 600 
0 

4090 IF k$< >"n" THEN GO TO 4030 
4100 GO TO 9999 
6000 REM INITIALISE 

6010 PAPER 7: CLS : FOR a=0 TO 21: PRINT : NE 
XT a 

6020 REM X AND Y POSITION OF SHIP 

6025 LET x = 16: LET -fx = x: LET y=10: LET fy=y 

6030 REM MISSILE BANK 

6040 LET i g=9 

6050 REM DISPLAY SHIP 

6054 FOR k=0 TO 48: BEEP .01,k: BEEP .01,48-k 
: NEXT k 

6055 LET 5$=CHR$ 144 
6060 PRINT AT y,x;s$ 

6070 REM VARIABLES 

6080 LET -f=0: LET m=0: LET d = l: LET e=0: LET 

a=0: LET b=0: LET c=0: LET ee=.2 

6090 LET x$=CHR$ 148+CHR$ 32+CHR* 149+CHR* 32 

+ CHRS 150+CHR* 151+CHR$ 152+CHR* 32 

6100 LET o$=CHR3s 145: LET p$=CHR$ 146: LET q* 


=CHR* 147 

6110 LET a*=“": FOR k=l TO 45: LET a$=a$+CHR* 
145: NEXT k 

6120 LET 1$="": FOR k = l TO 45: LET i*=iS>+CHR* 
147+CHR* 32: NEXT k 
6130 LET b$=" 

6140 LET c$=" "+p$+" "+p$+" 

"+p$+" "+p$+" 




254 Stellar Run 


" +P *+" 

6999 GO TO 1000 

7000 REM INSTRUCTIONS 

7010 PAPER yellow: CLS : PRINT AT 0,10; INK r 
ed; INVERSE 1;"STELLAR RUN" 

7020 INK black: PRINT AT l,0;"You are in 
control o-f theSTELLAR TRIPPER and 
havediscovered a new galaxy." 

7030 PRINT ’"The galaxy is 135 light years 
wide and you will have tonavigate your 
way through theWARP MAZE." 

7040 PRINT ’"Each time you play you will be 
given a slightly different maze....so watch 
out! ! ! “ 

7050 PRINT ’"See how -far you can get!" 

7060 PRINT ’"No-one has reached the other 
side! 11 

7070 PRINT ’"The -further you go, the harder 
it is!" 

7080 PAUSE 1000: CLS 

7090 PRINT AT 3,2i “Press 5 to move le-ft";TAB 
8; "8 to move right";TAB 8 5 " 6 to move -forward" 
; TAB 8! "7 to move back";TAB 4;"SPACE to -fire 

7100 PRINT AT 21,5;"Press any key to start" 
7110 IF INKEY$="" THEN GO TO 7110 

7999 RETURN 

8000 REM GRAPHICS 

8010 DATA "a”,66,102,126,126,60,60,24,24 

8020 DATA "b",255,170,251,170,255,170,255,170 

8030 DATA "c",24,36,102,153,153,102,36,24 

8040 DATA "d", 129,66,36,24,24,36,66,129 

8050 DATA "e",66,102,126,126,60,60,90,0 

8060 DATA "-f" ,66, 102, 126, 126,60, 188,0,73 

8070 DATA "g",66,102,126,126,60,0,0,129 

8080 DATA “h",66,102,126,0,161,0,8,0 

3090 DATA "i",128,16,0,4,64,0,4,0 

8100 FOR a=1 TO 9: READ a$: FOR b=0 TO 7: REA 

D c: POKE USR a*+b,c: NEXT b: NEXT a 

8200 LET blue=l: LET red=2: LET magenta=3: LE 

T green=4: LET cyan=5: LET yellow=6: LET whit 

e=7: LET b1ack=0 

8999 RETURN 

9999 BORDER 7: INK 0: PAPER 7: CLS 







255 

Russian Roulette 


The six-shooter points straight at you. There is only one bullet some¬ 
where in the cylinder. Spin the cylinder as much as you wish and then 
press the trigger—if you dare! 

10 REM *RUSSIAN ROULETTE @19 

S3 MICHAEL BEWS 

20 BORDER 0: INK 7: PAPER 0 
30 LET F=1: LET SC=0: LET HS=0 
100 CLS : PRINT INK 7; PAPER 2;"RUSSIAN ROU 
LETTE"!TAB 0; 

110 CIRCLE 126,119,32 
120 CIRCLE 146,131,6 
130 CIRCLE 146,107,6 
140 CIRCLE 126,95,6 
150 CIRCLE 106,107,6 
160 CIRCLE 106,131,6 
170 CIRCLE 126,143,6 
180 CIRCLE 126,119,14 
185 CIRCLE 126,119,13 
187 CIRCLE 126,119,12 

200 PRINT AT 11,15; "IB"; AT 12,15AT 13, 
15; "BS”> AT 14, 15; "Mr ; AT 15, 15; "Bl" 

210 PRINT AT 2, 15; 11 " 

220 PRINT PAPER is INK 7 j AT 16,0; "THIS IS A 
REVOLVER, POINTING AT YOU. IT HAS ONE BULLET 
. PRESS ’A’ TO SPIN THE CYLINDER FOR AS LON 
G AS YOU WISH AND FIRE WITH ’B’. SCORE 100 E 
ACH TIME THE GUNFAILS TO KILL YOU,THEN TRY AG 
AIN" 

230 PRINT AT 0,18; INVERSE 15“THIS SCORE: 

“SAT 1,15;"HIGHEST SCORE: 

250 LET A=PEEK 23556: IF A=255 THEN GO TO 2 
50 

252 BEEP .002,30 

255 PRINT AT 6,15;" ";AT 7,15;" “;AT 12,20 

>“ "!AT 14,20;” 

260 IF A< >65 THEN GO TO 400 

300 PLOT OVER l;146,131: LET F=l: PLOT OVE 
R l;146,131 



256 Russian Roulette 


305 LET A=PEEK 23556: IF A065 THEN GD TO 2 
50 

310 PLOT OVER 15146,107: LET F=2: PLOT OVE 
R 15146,107 

315 LET A=PEEK 23556: IF A<>65 THEN GO TO 2 


320 PLOT OVER 
15126,95 
325 LET A=PEEK 
50 

330 PLOT OVER 
R 15106,107 
335 LET A=PEEK 
50 

340 PLOT OVER 
R 15106,131 
345 LET A=PEEK 
50 


15126,95: LET F=3: PLOT OVER 
23556: IF A< >65 THEN GO TO 2 
15106,107: LET F=4: PLOT OVE 
23556: IF A< >65 THEN GO TO 2 
15106,131: LET F=5: PLOT OVE 
23556: IF A< >65 THEN GO TO 2 


350 PLOT OVER 15126,143: LET F=6: PLOT OVE 
R 15126,143 
360 GO TO 250 

400 IF A< >66 THEN GO TO 250 

410 IF F=1 THEN PRINT INK 2; PAPER 75 FLAS 
H 15 AT 6, 155 5 AT 7,155"HU";: PRINT AT 12,2 

05"YOU’RE DEAD!";AT 14,205“BULLET IN ";F: GO 
TO 500 

420 PRINT AT 12,20; "YOU SURVIVED"5 AT 14,205" 
BULLET IN ";F 

430 LET SC = SC + 100: PRINT INVERSE 15 AT 0,29; 

" "5 AT 0,29;SC 

440 IF PEEK 235560255 THEN GO TO 440 
445 BEEP .1,3: BEEP'.1,5: BEEP .1,1 
450 GO TO 250 

500 IF HS< SC THEN LET HS=SC 
505 LET SC=0 

510 PRINT INVERSE 15 AT 1,29;" "5 AT 1,29;H 


515 PRINT I INVERSE 1 5 AT 0,295“ " i AT 0,29jS 

C 


520 IF PEEK 235560255 THEN GO TO 520 
522 BEEP .1,1: BEEP .1,1: BEEP .1,0: BEEP .1 
1 

530 LET F=1: GO TO 250 



257 


Swordsman 


Choose your moment, then swiftly thrust your sturdy blade into the 
gaping jaws of some hideous monster. Beastmaster you’ll never be, these 
nasties are definitively untameable, but swordsman you might just about 
manage. It’s all quite simple. You just have to survive and get as many 
points as possible before some hideous creature does for you. Maybe the 
Vampire Cat will get to chew on your jugular. Who can tell? Quick. 

Lunge and thrust, missed... back to the left quickly... missed again.. 
Aaargh...! 

1 BORDER 4: INK 1: PAPER 4 

2 POKE 23685,255 

10 REM SWORDSMAN B 

Y H. WALWYN FOR THE CBM 64 

C 

ONVERTED FOR THE 16/48K SPECTRU 

M BY ANDY GREEN 

25 LET MZ=0 

30 DIM E$(4,64): LET E$(l)="YOU ARE UNHARME 
D AND RARING TO GO 

31 LET E$( 2 ) = "YOU ARE SLIGHTLY WOUNDED NOW. 
BE BRAVE 

32 LET E$(3)="YOU HAVE RECEIVED MULTIPLE 
LACERATIONS. 

33 LET E*(4)="IT’S YOUR LAST CHANCE NOW. GO 
OD LUCK... 

100 DIM V(9) 

110 FOR J=1 TO 9: READ V(J): NEXT J 
120 DATA 3,4,3,4,2,5,2,2,4 

150 REM ** VK=NUMBER OF DEAD MONSTERS 

160 REM ** WK=WOUNDED LEVEL 

170 REM ** PK=POINTS SCORED 

180 LET VK=0: LET PK=1: LET WK=1 

200 DIM V*<9,17) 

210 FOR K=1 TO 9: READ V$<K): NEXT K 
220 DATA "GANGRENE GOATNORTH-SEA BOIL","V 
AMPIRE CAT” 

230 DATA "POLITICAL WORM","MAD METER-MAID"," 



258 Swordsman 


SCHOOL SPINACH" 

240 DATA “DANDRUFFFED BEARRAMPANT BANKER" 

,"PICKLED ALBATROSS" 

500 DIM D$<4,3,4>: DIM M$<9,4,3,5) 

510 FOR 1=1 TO 4: FOR J=1 TO 3: READ D$(I,J) 
530 NEXT J: NEXT I 

550 REM ** THESE DATA LINES (600-620) CON 

TAIN THE VARIOUS STANCES OF THE SWORDSMAN 
600 DATA " 01"," O ",” ))" 

602 DATA " 0 I “, " O ", ” ( (" 

604 DATA " 0 0-", H X" 

606 DATA " 0",” 0--","/ ) " 

650 FOR K=1 TO 9: FOR J=1 TO 4: FOR 1=1 TO 3 
660 READ M$(K, J, I) 

680 NEXT I: NEXT J: NEXT K 

699 REM ** THESE DATA LINES (700-876) CON 

TAIN THE VARIOUS STANCES OF THE MONSTERS WH 
0 OPPPOSE THE SWORDSMAN 

700 DATA " 0 ","*«-",")>" 

702 DATA " 0 ", ” ■ , " ’ \\" 

704 DATA " 0 " , "IBB- ", " ’ \ " 

706 DATA "O /", " \“ , " (" 

720 DATA "***","*0:0*","* ■ *" 

722 DATA "***","*0:0*","* B *" 

724 DATA "***”,"*0:O*" 

726 DATA "***","*0:O*","* ■ *“ 

740 DATA "", "0- " , " X" 

742 DATA "","0- ”,” I" 

744 DATA " ", "0- " , " \ \ “ 

746 DATA "","0- 

760 DATA "00 O" , " 00 O" 

762 DATA 00"," 00 O" 

764 DATA "",“00 0","100 0" 

766 DATA "","0 0 ","100 00" 

730 DATA "$$$$$", "<$0.0*" , "<< > > " 

782 DATA "$$$$$","$0.OS"," X X" 

784 DATA "$$$$$","$0.0$","<< >>" 

786 DATA "$$$$$","$0.04;"," X X" 

300 DATA "MB 

802 DATA "■■■" , "BBBB" , "<711" 

804 DATA " ■■","BBB","■ M" 

806 DATA "■ ■" 

320 DATA "*00*."," "," B " 









Swordsman 259 


322 

824 

826 

840 

842 

344 


862 
364 
866 
999 
1000 
1 100 
1900 
2750 
2760 
CUT 
2765 

2799 

2800 


DATA "*00*",” . " , " E - 

DATA "*00*"" A 
DATA "*00*"," "," R " 

DATA " O""X” 

DATA “ 0", " : " , " ( ) " 

DATA " 0",“I:I“,“< >“ 

DATA “ 0","/ \“ 

DATA " M ","0 
DATA " O-, “ " 

DATA "0\\<", " ■ " , ” " 

DATA "“0--< ” , ! " 

REM ** START OF GAME 
CLS 

GO SUB 4000 
GO TO 1000 

FOR L=1 TO 100: NEXT L: RETURN 
PRINT AT 10,0! INVERSE 1;“THE " 
YOU UP" 

FOR 1=1 TO 100: NEXT I: RETURN 
REM ** CLEAR TOP OF SCREEN 
FOR X=0 TO 10: PRINT AT X } 0;" 


V$(MZ)!“ 


2815 NEXT X 

2817 PRINT AT 0,0; 

2320 RETURN 
2950 LET MR=MZ 

2960 LET MZ=INT (RND*9)+1: IF MZ=MR THEN GO 
TO 2960 
2970 RETURN 

4000 GO SUB 2950: REM ** MONSTER BATLE 
4002 INVERSE 1: PRINT AT 9,0;" 


4003 PRINT " 

4004 PRINT " 

4005 PRINT " IT’S THE ";V$(MZ);" ! 

4006 PRINT * (DEGREE OF DIFFICULTY TO KILL 

"; AT 14,0; ■■= " 


;V < MZ); “) " 

4007 PRINT ;E$(WK) 

4008 INVERSE 0 

4010 LET M7=4: LET D7=2: LET M8=INT (RND*6+20 
): LET D8=15: LET M6=4: LET D6=2: LET M9=M3: 
LET D9=D8 






260 Swordsman 


4015 PRINT AT 0,0;"TOTAL POINTS=";PK 
4020 LET A*=INKEY* 

4025 IF A*="5" THEN LET DS=D8-1: LET D7=l: I 
F DS< 4 THEN LET D8=4 

4030 IF AS="8" THEN LET D8=D3+1: LET D7=2: I 
F D3 >27 THEN LET D8 = 27 

4035 IF A$="6“ THEN LET D7=D7+1: IF D7>3 THE 
N LET D7=4: LET D3=D3+1: IF D3>27 THEN LET 
D8 = 27 

4036 IF A* = 11 6“ AND D7=2 THEN LET D7 = 3 

4037 PRINT AT 6,D9-i';" " ; AT 7,D9-1;" 

“;AT 8,D9-l;* 

4038 FOR X=0 TO 2: PRINT AT 6 + X,D9j D*(D7,X + 1) 

: NEXT X 

4039 LET D9=D3: LET D6=D7 

4040 IF D7=4 THEN GO TO 4060 
4050 GO TO 4085 

4060 FOR X=0 TO 2: PRINT AT 6+X,M9iMS(MZ,M6,X 

+1): NEXT X 

4065 FOR Z=0 TO 1 

4068 LET Z1=CODE (SCREEN* (7,1+D3+Z)): IF Zl< 
>32 AND Zl<>43 AND Zl<>45 THEN GO TO 4090 
4070 PRINT AT 7,2+08;"+" 

4072 NEXT Z 

4082 LET D7=2 

4085 LET M7=M7+1: IF M7=5 THEN LET M7=l 

4036 IF RND >.35 THEN LET M8=M3-1 

4087 PRINT AT 6,M9-1;“ ”;AT 7,M9-l;" 

";AT 8,M9-1;" 

4083 FOR X=0 TO 2: PRINT AT 6+X,M8;M*<MZ,M6,X 
+ 1): NEXT X: IF M3< D8 + 2 THEN GO TO 4100 

4089 LET M9=M8: LET M6=M7: GO TO 4020 

4090 PRINT INVERSE 1;AT 10,0;"WELL DONE) YOU 

GOT THE “;V*(MZ);" 

4091 LET P5=INT <V(MZ)*D8): LET VK=VK+l: LET 
WK=WK-l: IF WK<1 THEN LET WK=1 

4092 PRINT AT 0,0;"POINTS FOR KILL = ";P5: LE 
T PK=PK+P5: GO SUB 2750 

4093 GO SUB 2800 
4095 RETURN 
4100 LET WK=WK+1 

4102 IF WK< 5 THEN PRINT AT 0,0; "TRY AGAIN... 



Swordsman 261 


": GO SUB 2 760: GO SUB 2300: GO TO 4001 
4103 CLS 

4105 PRINT ’’’’: FOR 1=1 TO 3: PRINT "OH DEAR 

4106 POKE 23692,255 

4107 BORDER I: FOR J=1 TO 50: NEXT J: NEXT I 
4110 PRINT ’"AAAAAAAARGH!! M “ 

4120 PRINT ’"ANOTHER HERO BITES THE DUST." 
4125 PRINT ’"YOU KILLED ";VK;“ MONSTERSSCO 
RING " ;PK,’" POINTS." 

4130 PRINT ’"PRESS ’Y’ TO PLAY AGAIN, ’N’ 

TO FINISH." 

4132 IF INKEY$< >”" THEN GO TO 4132 

4133 IF INKEY$< > " Y" AND INKEY*<>"N" THEN GO 
TO 4133 

4134 IF INKEY$="Y" THEN RUN 

4135 STOP 




262 


Hangman 


In this rather sophisticated game of Hangman the computer invites you 
to guess words from a range of topics, including animals, countries of the 
world, composers and artists, chemical elements, Christian names and 
general verbs. 

The strings from which the words are chosen by the computer are stored 
in A$ and you may wish to modify the program to include your own 
words and topics or to combine all the existing topics so that the selected 
word can be taken randomly from any one of them. Note that some of the 
topics are divided up into two distinct groups of words of different 
lengths and random number routines are used in the program to 
determine which group the word is to be chosen from. 

1 RANDOMIZE : BORDER 7: PAPER 7\ INK 0: CL 
S 

2 REM @ PAUL STANLEY 

A GO SUB 7000 

5 POKE 23658,10 
10 GO TO 1000 

100 IF RND>.5 THEN GO TO 125 

110 LET A*="PIGEONDONKEYBUDGIEMAGGOTJAGUARSP 
IDERBEETLEWEEVILEARWIGSHRIMPSALMONPLAICEMINNO 
WBADGERCATTLEKITTENLOCUSTMAGPIERABBITTURKEYTU 
RTLECANARYGERBILMONKEYCURLEW" 

120 LET 1=(INT <RND*25>+1)*6-5: LET B*=A*(I 
TO 1+5): RETURN 

125 LET A$= 11 SNAILROACHHIPPOLLAMACHIMPCAMELHO 
RSETIGERHOUNDSNAKEROBINHERONRAVENSTORKTROUTWH 
ALEHYENAPANDASKUNKTAPIRZEBRAMOUSESHREWEAGLESW 
IFTPERCHPRAWNOTTERGOOSEKOALASHEEP" 

130 LET 1=(INT <RND*31)+1>*5-4: LET B*=A$(I 
TO 1+4): RETURN 
150 IF RND>.5 THEN GO TO 175 

160 LET A$="ALBANIAAUSTRIABELGIUMDENMARKFINL 
ANDGERMANYHUNGARYICELANDIRELANDRUMANIABAHRAIN 
LEBANONALGERIALIBERIANIGERIASENEGALTUNISIABER 
MUDAJAMAICABOLIVIAURUGUAY" 

170 LET 1=(INT <RND*21)+1 )# 7 - 6 : LET B$=A$ <I 
TO 1+6): RETURN 



Hangman 263 


175 LET A$="TURKEYUGANDASWEDENPOLANDNORWAYME 
XICOKUWAITISRAELGREECEZAMBIAFRANCECYPRUSCANAD 
ABRAZILT AIWANPANAMAMALAWIJORDANAZORESANGOLA" 

135 LET 1=(INT (RND*20)+1)*6-5: LET B$=A*(I 
TO 1+5): RETURN 

200 LET A$="PURCELLROSSINIBELLINIBERLIOZBORO 
DINPUCCINIDEBUSSYSTRAU3SBRITTENH0LBEINMILLAIS 
DAUMIERCEZANNEGAUGUINMATISSEPICASSO" 

210 LET I“(INT (RND*16)+1)*7-6: LET B$=A$(I 
TO 1+6): RETURN 

250 IF RND >.5 THEN GO TO 275 

260 LET A$="BARIUMCARBONCERIUMCOBALTCOPPERCU 
RIUMERBIUMHELIUMINDIUMIODINENICKELOSMIUMOXYGE 
NRADIUMSILVERSODIUM" 

265 LET 1= <INT (RND*16)+1)*6-5: LET B«=A$<I 
TO 1+5): RETURN 

275 LET A$=“ARSENICBISMUTHBROMINECADMIUMCAES 
IUMCALCIUMFERMIUMGALLIUMHAFNIUMHOLMIUMIRIDIUM 
KRYPTONLITHIUMMERCURYRHENIUMRHODIUMSILICONSUL 
PHURTERBIUMTHORIUMTHULIUMYTTRIUM" 

280 LET I = ( INT < RND*22 ) + 1) *7-6 : LET B3>=A$ ( I 
TO 1+6): RETURN 

300 LET A$="JAMESDA0IDEDGARHENRYCAROLHELENBR 
IANSALLYSARAHSUSANPETERSIMONMANDYKEVINSCOTTNI 
GELMILESROBINVENUSROMEOCECILDYLANPERCYLEIGHEM 
ILYPABLOFRANKCLIVEDIANANICKYTRACYBARRYGEOFFTE 
RRY “ 

320 LET 1=(INT (RND*34)+1)*5-4: LET B*=A$<I 
TO 1+4): RETURN 

350 IF RND >.5 THEN GO TO 375 

360 LET A$=“CARRYCATCHMARRYLAUGHTWISTBRINGFE 
TCHWRITECLIMBWORRYGLIDEAWASHSHOOTDODGEPUNCHSM 
ACKSCALETHROWLOATHDRI0EPRESSTASTESPEAKHURRYSC 
ORETRAILFORCEPROVETRACEPAINT" 

370 LET I=(INT (RND*30)+1)*5-4: LET B*=A*<I 
TO 1+4): RETURN 

375 LET AS="COLOURTHRILLUNLOCKAFFECTABDUCTFO 
LLOWATTACKDEFENDDIFFERSELECTOUTPUTDEFINECHANC 
EMODIFYREMAINACCEPTSPRINGASSUREVANISHFINISHTR 
AVEL" 

390 LET 1=(INT <RND*21)+1)*6-5: LET B$=A$(I 
TO 1+5): RETURN 

1000 PRINT AT 0,9; PAPER 3; INK 7; " H A N G M 
A N" 



264 Hangman 


1005 PRINT INK 1’’"Which subject do you want 

1010 PRINT INK 4’’"1.ANIMALS"’ INK 3’ "2. 

....COUNTRIES OF THE WORLD"’ INK 4' "3.COM 

POSERS & ARTISTS" 

1020 PRINT INK 3’”4.CHEMICAL ELEMENTS"’ 

INK 4’ "5.CHRISTIAN NAMES"’ INK 3’ "6.G 

ENERAL VERBS" 

1050 PRINT ’ INK 2’"Press the appropriate key 

1060 LET i*=INKEY$: IF CODE I$<49 OR CODE I$> 
54 THEN GO TO 1060 
1070 GO SUB 50+50*VAL i$ 

1080 LET C*=B$: CLS 

1090 PRINT PAPER 35 INK 7;AT 0,15;“H A N G M 
A N" 

1100 LET S=0: LET C=0: LET 1=LEN b$: LET Y=13 
: LET X= 15 

1105 PRINT AT 11,155 INK 2i“Your guesses:" 
1110 FOR -f = i TO l: PRINT AT 3,13 + -f*2; INK 4j" 
NEXT -f 

1120 PRINT AT 7,15 5 “Guess a letter" 

1130 LET IS=INKEYS: IF 1$="" THEN GO TO 1130 
1140 IF CODE I3K65 OR CODE I*>90 THEN GO TO 
1130 

2000 LET S1=S: FOR F=1 TO L 

2010 IF I$=B$<F) THEN LET B$(F)="*": GO TO 2 
100 

2020 NEXT F: IF S=S1 THEN BEEP .4,-15: BEEP 
.4,-25: GO SUB 5000+10*C: LET C=C+1 
2030 IF S=Si THEN PRINT INK 4;AT Y,X;I$: LE 
T X=X + 2: IF X=>33 THEN LET X=15: LET Y=Y + 2 
2040 GO TO 1120 

2100 PRINT INK 25 AT 3,13+F*2iI$ 

2110 BEEP .3,30: LET S=S+1: IF S=L THEN GO T 
0 3000 
2115 NEXT F 
2130 GO TO 1120 

3000 PRINT AT 20,0i"WELL DONE! YOU CORRECTLY 
GOT "iC$i" IN "iC+S;" GUESSES" 

3010 FOR F=1 TO 400: NEXT F: CLS : GO TO 1000 

ETURN 







Hangman 265 


5010 FOR F=5 TO 16: PRINT INK 3;AT F,2;"B": 
NEXT F: RETURN 

5020 PRINT AT 4,2; INK 4;" ": RETURN 

5030 FOR F=0 TO 5: INK 2: PLOT 24,112+F: DRAW 
23-F,23-F: NEXT F: INK 0: RETURN 

5040 PRINT INK 1iAT .. RETURN 

5050 INK 2: CIRCLE 73,118,9: PLOT 70,120: DRA 
W 1,0: DRAW 0,1: DRAW -1,0: PLOT 76,120: DRAW 
1,0: DRAW 0,1: DRAW -1,0 
5052 PLOT 73,118: DRAW 3,-3: DRAW -2,0: DRAW 
-1 , 1 

5056 PLOT 69,115: DRAW 10,0,2: INK 0: RETURN 
5060 FOR F=72 TO 75: PLOT F,104: DRAW 0,4: NE 
XT F 

5062 PRINT INK 3;AT 9,3;"il "; INK 5;AT 10,7 
i“ ■■■“; INK 3 i AT 11,3; " ; INK 5;AT 12,3;" 

": RETURN 

5070 PLOT 83,104: DRAW 10,10: DRAW 1,0: DRAW 
-10,-10: FOR F=1 TO 3: CIRCLE 97,116,F: NEXT 
F: RETURN 

5080 PLOT 64,104: DRAW -10,10: DRAW -1,0: DRA 
W 10,-10: FOR F=1 TO 3: CIRCLE 51,116,F: NEXT 
F: RETURN 

5090 INK 5: FOR F=1 TO 4: PLOT 67+F,79: DRAW 
-20,-30: NEXT F 

5092 INK 0: PRINT AT 16,5;" ": RETURN 

5100 INK 5: FOR F=1 TO 4: PLOT 79+F,79: DRAW 
20,-30: NEXT F 

5102 INK 0: PRINT AT 16,12;" 

5110 PRINT AT 20,0!"BAD LUCK! YOU’VE BEEN HAN 
GED. THE ANSWER WAS ";B$ 

5120 GO TO 3010 

7000 FOR L=5000 TO 5090 STEP 10: GO SUB L: NE 
XT L 

7050 INK 5: FOR F=1 TO 4: PLOT 79+F,79: DRAW 
20,-30: NEXT F 

7060 INK 0: PRINT AT 16,12;“ 

7080 FOR F=1 TO 3: FOR 1=1 TO 11: BEEP .02,1: 

NEXT I: LET I=USR 3230: NEXT F 
8000 PRINT INK 7; "■ ■ ■ | ■ HI ■ ■ ■ 

■ ■■■■■■■I I ■■■■■ ■■■ ■■■ 




266 Hangman 


8010 FOR F=7 TO 0 STEP -1: FOR 1=17 TO 21: PR 
INT AT 1,01 OVER lj INK F; " 

BEEP .01,5: BEEP .01,10: NEX 

T I: NEXT F 

9000 PRINT AT 5,16; INK 3;"@ Paul Stanley" 
9500 PAUSE 250: CLS : RETURN 



267 

Roots 


You are about to see your infallible micro make an unbelievably simple 
mistake—that even a four year old child would spot! 

In the section of the program where you are asked to enter numbers 
yourself, we have actually included an ABS function in LINE 670 to 
help your computer out of its predicament! Computers are happiest in 
Binary arithmetic but would probably settle for Hexadecimal as a 
compromise—but if we humans insist that micros communicate with us 
in the Decimal system then we have only ourselves to blame if the 
computer seems to get it wrong occasionally. 

10 REM ** ** ROOTS 
@1933 MICHAEL BEWS 

15 BORDER 3: INK 7: PAPER 1 
20 POKE 23609,111 

50 FOR X=1 TO 3: FOR Y=0 TO 7: READ a: POKE 
USR CHR$ (143 + X)+Y,a: NEXT y: NEXT X 
60 FOR X=1 TO 4: FOR Y=0 TO 7: READ a: POKE 
USR CHR* <146+X)+Y,a: NEXT y: NEXT X 
100 CLS : PRINT " ROOTS @1983 MICHAEL 
BEWS " 

110 PRINT INVERSE li"THIS PROGRAM CALCULATE 
S ROOTS USING BOTH THE INTERNAL ’ A ’ FUN 
CTION IN THE COMPUTER ROM ANDNEWTON/RAPHSON R 
EITERATIVE APPROXIMATION. 

115 PRINT INK 7; PAPER 2j FLASH 1;" WHEN 
IS A ’5’ NOT A ’5’ ?? 

120 PRINT INVERSE 1}" THE PROGRAM WILL D 
EM0N3TRATE0NE OF THE PROBLEMS FACED BY YOU 
R COMPUTER WHEN IT TRIES TO 
130 PRINT INVERSE l;“CONVERT THE RESULT OF 
ITS BINARYSYSTEM CALCULATIONS INTO DECIMAL 
FOR DISPLAY ON THE SCREEN. 

140 PRINT INVERSE 1;"ALTHOUGH WE WOULD NEED 
TO EMPLOYMACHINE CODE METHODS TO ACTUALLYSEE 
THE ’BIT 1 DIFFERENCE BETWEENTWO SEEMINGLY ID 
ENTICAL NUMBERS, WE CAN"; OVER 1;CHR9> 3iCHR$ 8 
;CHR$ 3; INK 1; PAPER 7;"_"; OVER 05 



268 Roots 


150 PRINT INVERSE 1j" SHOW YOU THE ’IMPOSSI 
ELE’ AS YOUR COMPUTER ’FAILS’ TO RECOGNISE 
THE NUMBER FOR WHICH IT IS SEARCHING! 

160 INPUT INK 7; PAPER 2;"PRESS < ENTER > “; 

X * 

170 CLS : PRINT "ROOTS @1983 MICHAEL 
BEWS " 

175 PRINT INVERSE 15" " i TAB 0;“ANY ROOT MAY 

BE CALCULATED BY REITERATIVE APPROXIMATION 
USING " 

180 PRINT INVERSE 1;” ";TAE 0;" A =1 D 

N + G*(R-1)F R£G^(R-1) 

6“i TAB 0; 

185 PLOT 56,128: DRAW INVERSE 1;6,0: PLOT 7 
2,128: DRAW INVERSE i;52,0 

187 PRINT INVERSE 1; " " ;TAB 0; "WHERE N=ORIG 

INAL NUMBER R=ROOT NUMBER REQUI 

RED G=ANY NUMBER 

A=APPROXIMATION TO >3N PRODUCED B 

Y THE FORMULA" 

188 PRINT INVERSE 1i" ";TAB 0;”IF A<>G THEN 

WE LET G=A AND REPEATEDLY APPLY THE FORM 

ULA, MAKING G EQUAL TO THE PRECEDING VALUE 
OF ’A’ UNTIL A = G. AT THIS POINT"iTAB 0i" 

A = /)N" ; TAB 0; 

190 INPUT INVERSE 1;"PRESS<ENTER> ";XS 
192 CLS : PRINT "ROOTS @1983 MICHAEL 
BEWS " 

195 PRINT INVERSE 1i" ";TAB 0;" A =1 D 

N + G*(R-1)F R£G~(R-1) 

G “STAB 0; 

196 PLOT 56,152: DRAW INVERSE 1;6,0: PLOT 7 
2,152: DRAW INVERSE 1;52,0 

200 PRINT INK 7; PAPER 2;" EXAMPLE TO 

FIND BA 16 

210 PRINT INVERSE 1 ; " ";TAB 0;"LET G=3 (A R 

EASONABLE GUESS AS BA 16=«FAS YOU KNOW!)" 

;TAB 0; 

220 LET G=3: LET N=*16 
225 GO SUB 230 
227 GO TO 235 

230 LET A=(N/G+G)/2: RETURN 



Roots 269 


235 PRINT PAPER 5; INK 0\ "G="iG>" GIVES A=" 

;a:tab 0; 

240 PRINT INVERSE 1;"WE NOW LET G="5 A;TAB 0 
;“ AND TRY THE FORMULA AGAIN 

245 LET G=A: GO SUB 230 

250 PRINT INK 0; PAPER 5;"G=" ;G5" GIVES A=“ 

;A;TAB 0! 

260 IF A=G THEN GO TO 230 
270 GO TO 245 

230 PRINT INVERSE 1i" THEREFORE 416 = 

";a;TAB 0;" ";tab 0; 

285 PRINT INK 7; PAPER 2;“ YOUR COMPUTER SA 
YS THAT £416=";Ai“ " 

290 PRINT FLASH 1;AT 21,0;" LOOK AT THIS EX 
AMPLE CAREFULLY " 

300 INPUT PAPER 6? INK 1;"AND THEN PRESS <E 
NTER > "!X$ 

310 PRINT INVERSE 1!AT 5,0;: FOR X=1 TO 16: 
PRINT INVERSE 1;" ";TAB 0\: NEXT X: PRINT T 

AB 31;“ " 

320 PRINT INK 7; PAPER 2;AT 4,0!” EXA 

MPLE TO FIND £425 

330 PRINT INVERSE l!” “iTAB 0;“LET G=3 AGAI 
N(£425=5 AS WE KNOW)" 

340 LET G=3: LET N=25: GO SUB 230 
350 PRINT PAPER 5; INK 0;"G=";G;" GIVES A=" 
;A;TAB 0; 

360 PRINT INVERSE 1;"WE NOW LET G=";A;TAB 0 
i " AND TRY THE FORMULA AGAIN 

370 LET G=A: GO SUB 230 

380 PRINT INK 0; PAPER 5;"G="5Gi " GIVES A=” 
;A;TAB 0; 

390 IF A=G THEN GO TO 400 
395 GO TO 370 

400 PRINT INVERSE 1;" THEREFORE 425 = 

“iAiTAB 0; 

402 PRINT INVERSE 1;TAB 14; FLASH i;"BUT“5 
FLASH 0;TAB 0; • 

405 PRINT INK 7; PAPER 2;“YOUR COMPUTER "i 
FLASH 1;"FAILED"; FLASH 05" TO STOP ON THE FI 
RST "i INK 0; PAPER 5!"G=5 GIVES A=5"i INK 7; 

PAPER 2;" BECAUSE G DOES NOT EQUAL PRECISE 
LY 5!!" 



270 Roots 


410 PRINT AT 21,0; FLASH 1 ; 11 ENTER" ; FLASH 0; 
" ’R’ TO REPEAT THE EXAMPLES" 

420 INPUT INK 7; PAPER lJ"OR < ENTER > TO TRY 
YOUR OWN“;X* 

430 IF X$= “R 11 OR X$="r" THEN GO TO 192 
440 CLS : PRINT " ROOTS @1933 MICHAEL 
BEWS " 

500 PRINT AT 1,0;"ENTER NUMBER (N): “ 

505 INPUT INVERSE 1;">0 AND <1000000 "5N$ 

510 IF N$="" THEN GO TO 505 

515 FOR X=1 TO LEN N$: IF N$(X)<"0" OR N¥(X) 
>“9” THEN GO TO 505 
520 NEXT X 

530 LET N = VAL N$: IF N<.01 OR N>1000000 THEN 
GO TO 505 

540 PRINT INVERSE 1;AT 1,1S;N 

550 PRINT AT 2,0;"ENTER NUMBER OF THE DESIRE 
D ROOT" 

560 INPUT INVERSE l;"ROOT <>1 AND <100) "iR 

$ 

570 IF R$="" THEN GO TO 560 

580 FOR X=1 TO LEN R$: IF R$(X)<"0" OR R$<X) 
>"9" THEN GO TO 560 
590 NEXT X 

600 LET R=VAL R$: IF R<2 OR R>99 THEN GO TO 
560 

605 PRINT AT 3,5;": ROOT NUMBER = INVERSE 
1 » R 

610 LET G=2*(N A (1/R)): LET X=1 
650 LET A=(N/GMR-i>+G#<R-1> )/R 
660 PRINT AT 6,0;Xi"> A=";A 

670 IF ABS (A-GX.0001 THEN GO TO 700 
680 LET X=X+1.' LET G=A: GO TO 650 
700 PRINT INVERSE 15 AT 8,0; "THE ";R;" ROOT 
of ";n;" is ";tab 19;A;tab 0; 

710 PRINT AT 13,0!"CHECK,USING COMPUTER ’ A ’F 
UNCTION";" ";TAB 0;A;" a ";R;" = '^A'-R 
720 PRINT INVERSE 1;AT 21,05" ENTER 

’0’ TO QUIT 

730 INPUT INVERSE l;"OR < ENTER > TO TRY AGAI 
N " ; X* 

740 IF X$="Q" OR X$="q" THEN STOP 
750 GO TO 440 



Roots 271 


999 STOP 

1000 DATA 31,16,16,16,144,80,32,0 

1010 DATA 112, 14*4,32,64,240,0,0,0, 240, 16, 112, 

16,240,0,0,0 

1030 DATA 2,4,8,8,16,16,32,32,32,16,16,3,8,4, 
2,0,64,32,16,16,8,8,4,4,4,3,3,16,16,32,64,0 



272 


Bulls and Cows 


Choosing a four digit number, the computer will respond to your guesses 
(or deductions, we hope) by displaying a bull when you get a correct digit 
in the the right place, and a cow when a number you input also occurs in 
the computers’ number, but not in the same place. You should note that 
the computers number can have the same digit repeated. 

You can choose the number of guesses you’re allowed, making it more 
difficult for yourself as you get more practiced. 

1 REM Bulls and Cows @ Robert Erskine 
10 GO SUB 9000 
20 GO SUB 8000 
26 FOR x=l TO 4 

100 RANDOMIZE : LET R-RND: INPUT "How many g 
uesses do you want?";t 
110 GO SUB 1000 

120 CLS : PRINT "I have chosen a number": PA 
USE 100 

130 GO SUB 2000 
135 FOR q=l TO t 

140 INPUT “ENTER YOUR GUESS NOW (4 digits) " 
I LINE g$: IF LEN g$< >4 THEN PRINT #lj FLASH 
li“reinput correctly!!": PAUSE 60: GO TO 140 
145 FOR f = l TO 4: IF CODE g$(-f)<48 OR CODE g 
*(-f)>57 THEN PRINT #1; FLASH lj "Numbers only 
: PAUSE 60: GO TO 140: NEXT f 
150 GO SUB 200 
160 GO SUB 3000 
170 IF b1ack<4 THEN NEXT q 
180 PAUSE 100: GO SUB 4000 

190 PRINT AT 21,4!"PRESS ANY KEY TO RESTART" 
: PAUSE 0: GO TO 100 
200 LET black=0: LET white=0 
205 DIM a(4): DIM h(4) 

210 FOR x = l TO 4 

215 LET a(x)=VAL (g*(x)) 

217 NEXT x 

220 FOR x=l TO 4 

230 IF a(x)=n < x) THEN LET b1ack=b1ack+1 



Bulls and Cows 273 


240 IF a(x)=n < x) THEN LET h<x)=l 

250 NEXT x 

260 FOR x=l TO 4 

270 FOR y=l TO 4 

280 IF a < x)=n(y) AND h(y)=0 THEN LET white- 
White+l: LET h(y)=l: GO TO 310 
290 NEXT y 
310 NEXT x 
320 PRINT g$; 

330 RETURN 

1000 DIM n(4): REM choose 

1010 FOR x=l TO 4 

1020 LET n (x 1=INT <RND*9)+1 

1030 NEXT x 

1040 RETURN 

2000 BORDER 0: PAPER 1: INK 7: CLS 
2010 PRINT "GUESSES BULLS COWS" 

2020 PRINT 
2030 RETURN 

3000 IF black-0 THEN GO TO 3070 

3010 LET + = 13 

3020 FOR x = l TO black 

3030 PRINT TAB <+)5 INK 05 “/9" 5 

3040 BEEP .1,25 

3050 LET -f=-f + l 

3060 NEXT x 

3070 IF white=0 THEN GO TO 3130 

3080 LET +=22 

3085 FOR x = 1 TO white 

3090 PRINT INK 75 TAB <+);"£"; 

3100 BEEP .1,25 
3110 LET +=++1 
3120 NEXT x 
3130 PRINT 
3160 RETURN 

4000 IF black<4 THEN GO TO 4030 
4010 CLS : PRINT AT 4,05“You are correct, the 
number " ,,, " I chose was “5 
4020 GO TO 4040 

4030 CLS : PRINT "That was not very good. The 
, "number I chose was "5 
4040 FOR x =1 TO 4 
4050 PRINT n(x)5 



274 Bulls and Cows 


4060 NEXT x 

4070 PRINT : PRINT : PRINT 5"and you guessed 

4080 FOR x = l TO 4 
4090 PRINT a < x) i 
4100 NEXT x 
4110 PRINT 
4120 RETURN 

8000 PRINT AT 1,8;“Bulls and Cows": PRINT 
8010 PRINT "The object of Bulls and cows is", 
"to guess a four digit number ",“chosen by th 
e computer. After "/each guess the computer 
will ","give you clues! each bull ", "indicate 
s a correct digit in thecorrect position and 
each cow ","indicates a correct digit in “,"t 
he wrong position." 

8020 PRINT AT 21,4;"Press any key to start" 
8030 IF INKEY$=”" THEN GO TO 8030 
8040 RETURN 

9000 RESTORE : FOR x=USR "a" TO USR “b”+7 
9010 READ n 
9020 POKE x , n 
9030 NEXT x 

9040 DATA 0,2,3,255,126,126,66,66,0,0,3,255,1 
26,126,66,66 
9050 RETURN 



275 


Invaders 


How could we write a Bumper Book of programs without including the 
classic Invaders games? Well, here it is complete with shields and 
Mothership and a screen full of the dreaded Aliens. 

10 REM *** INVADERS - @1983 
MICHAEL BEDS 
20 DIM I(50) 

30 GO TO 460 

49 REM ******MAIN PROGRAM LOOP 

50 GO SUB 70: GO SUB 220: GO TO 50 
69 REM INVADER SHUFFLE ROUTINE 

100 FOR X = U TO P: IF I(X+L*P)=U THEN NEXT X 
: LET FX=U: FOR X=U TO 49: IF I(X)=U THEN NE 
XT X: GO TO 900 

120 IF FX=U THEN LET FX=0: GO TO 180 

125 IF L + A >21 THEN GO TO 800 

130 PRINT AT L+A,0j: IF Z=-U THEN PRINT ■ 

140 FOR X=U TO P: LET B*=I$: IF I(P*L+X)=U T 
HEN LET B*=" 

150 PRINT B*i 
160 NEXT X 

180 LET L = L + U: IF L >Q THEN LET L=0: LET Z=- 
Z: LET C=C+U: IF C=V THEN LET C=0: PRINT AT 
A,0i" “;: LET 

A = A + U. 

190 IF <L=0 AND A >0) THEN PRINT AT 0,0;“ 

“iAT 0,INT (27*R 

ND) i INK 2j G3> 

200 RETURN 

210 REM **KEYBOARD INPUT**** 

220 LET X*=INKEY$ 

230 IF X$=" H THEN RETURN 

240 IF (CODE X*=ll OR X$="7“) THEN GO SUB 3 
30: RETURN 
245 BEEP .08,-40 
250 IF X$<>"5" THEN GO TO 265 
255 IF XP<U THEN RETURN 
260 LET XP=XP-U: PRINT AT 20,XP;T$;: 


RETURN 



276 Invaders 


265 IF X*<>"8" THEN 60 TO 280 
270 IF XP >27 THEN RETURN 

275 LET XP=XP+U: PRINT AT 20,XP;T*;: RETURN 
280 IF CODE X*<>8 THEN GO TO 290 
235 PRINT AT 20,XP;” LET XP=XP-V: IF 

XP<0 THEN LET XP=0 
286 PRINT AT 20,XP;T*;: RETURN 
290 IF CODE X*<>9 THEN RETURN 
292 PRINT AT 20,XP;“ “j: LET XP=XP+V: IF 

XP>27 THEN LET XP=27 
295 PRINT AT 20,XP;T*;: RETURN 
320 REM **R0CKET FIRE****** 

330 LET XN= <XP-U + W)*T*. LET XS«XN-W*INT (XN/W 
): IF (XSOT AND XSOT + T) THEN RETURN 
332 IF RR<1 THEN PRINT AT 21,15; FLASH 1 I " 
TAKE COVER!! 0 "J FLASH 0: RETURN 

334 BEEP .12,35 

335 LET RR=RR-1: PRINT AT 21,30;“ ";AT 21,3 

0; RR; 

340 PRINT AT 19,XP + U; "H *; 

350 FOR R=18 TO 0 STEP -U: IF SCREEN* <R,XP+ 
U) =" “ THEN NEXT R: PRINT AT 19,XP+U;“ ";AT 

0, XP+U; u ; AT 21, w; FLASH l;"MISS! B ; FLASH 0: 

BEEP .2,-15: FOR X=U TO 80: NEXT X: LET SC=S 
C-W: PRINT AT 21,6;“ “;AT 21,6?SC;TAB W;“ 

“;AT 0,XP+U;" “: RETURN 

360 FOR X=1 TO 3: PRINT AT R,XP+U;M*;: BEEP 
. 02,30-(3*X) : FOR Y=1 TO 8: NEXT Y: PRINT AT 

R,XP + U;“ '*;: for y=u to v: next y: next x: pr 
int AT R,XP;“ “;AT 19,xp+U;“ LET SC=SC+ 

200-(180*S6N R): PRINT AT 21,6;SC; 

370 IF R>=A THEN LET I < P* < R-A ) + U+INT ((XP+1 
)/4))=1 
380 RETURN 

459 STOP 

460 CLS : BORDER 1: PRINT PAPER 1; INK 7\“ 
INVADERS @1982 M.BEWS”: PRINT AT 0,1J 

OVER 1|"je_" ; OVER 

0 

462 PRINT AT 11,55“I NITIALISING" 
465 FOR X=0 TO 7: READ A,B: POKE USR “S"+X,A 
: POKE USR “7“+X,B: NEXT X: LET I*=“S'/“ + " 

470 FOR X=0 TO 7: READ A,B: POKE USR “4"+X,A 



Invaders 277 


: POKE USR "£“+X,B: NEXT X: LET T$=" " + ",45" + " 

480 FOR X=0 TO 7: READ A,B: POKE USR “C"+X,A 
! POKE USR " <5" + X, B: NEXT X: FOR X=0 TO 7: REA 
D A, B: POKE USR "5"+X,A: POKE USR "/ r “+X,B: NE 
XT X: FOR X=0 TO 7: READ A: POKE USR “5“+X,A: 
NEXT X: LET G%="CD£FS" 

490 FOR X=0 TO 7: READ A,B,C: POKE USR 'V'+X 

,a: poke usr “A"+x,b: poke usr "Z"+x,c: next 
x: LET 'D%=“JAL “ + " 

495 FOR X=0 TO 6: POKE USR "5"+X,24: NEXT X: 
POKE USR "5"+7,0: LET R*="H" 

497 FOR X=0 TO 7: READ A: POKE USR "tf"+X, A: 
NEXT X: LET 
500 LET RR=60 
510 LET HS=0: LET TS=0 

550 PRINT AT 1,0;"USE YOUR ROCKET LAUNCHER " 
J T*i “ TO WIPE OUT THE INVADERS ";I3>; 

560 PRINT " ANDTO DAMAGE THE COMMAND SHIP WH 
ICH ARRIVES LATER "JG*5 
570 PRINT : PRINT “YOU CAN NOT FIRE WHILE YO 
U ARE BEHIND A LASER SHIELD “;D$ 

590 PRINT : PRINT “USE LEFT AND RIGHT CURSOR 
ARROWSTO MOVE YOUR LAUNCHER (with CAPS SHIFT 
to move -faster). USE THE ’UP’ ARROW TO FI 
RE ROCKETS." 

600 PRINT TAB 3;"YOU HAVE ONLY ";RR+lJ" ROCK 
ETS. " 

610 PRINT "**#***####**###*" 
620 PRINT “SCORE 20 FOR EACH KNOCKED OUT I 
NVADER AND 200 FOR EACH DIRECT HIT ON 

THE COMMAND SHIP." 

700 PRINT “LOSE 10 POINTS FOR EACH MISS!!" 
710 PRINT : PRINT " IF INVADERS GET CLOSE TO 
YOU THEY WILL BECOME INDESTRUCTABLE!" 

720 PRINT TAB 2} FLASH 1;"<PRESS ANY KEY TO 
START GAME >"; FLASH 0 
722 IF INKEY3>=“" THEN GO TO 722 m 
725 LET A=0: LET C=0: LET FX=0: LET L=0: LET 
P=7: L.ET <3=6: LET T=2: LET U=l: LET V=5: LET 
W=10: LET SC=0: LET XP=0: LET Z=1 
730 BORDER 5: PAPER 5: CLS : FOR X=0 TO 6: P 
RINT AT X,2;: FOR Y=1 TO 7: PRINT INK l|I*j: 




278 Invaders 


NEXT y: next X 

750 PRINT AT 19,0;: FOR X=1 TO 6: PRINT INK 
3;0$;: NEXT X: PRINT INK 3; “LK U i 
760 PRINT AT 20,0)T*; 

770 PRINT AT 21,0J"SCORE:";SC;AT 21,15;"R0CK 
ET RESERVE: M j RR; 

790 60 TO 50 

799 REM ***END OF LOST GAME 

800 PRINT AT 5,0; PAPER 2J INK 7;"Y0UR PLANE 
T HAS BEEN TAKEN OVER. 

YOU SCORED " JSC}" USING "S60-RR; ,, RO 
CKETS"!: GO TO 910 

900 PRINT AT 5,0! PAPER l! INK 7;"YOU HAVE W 
IPED OUT THE INVADERS, ";AT 7,0; "SCORED ”;SC; " 
AND USED ";60-RR;" ROCKETS")AT 9,1; FLASH 15 
“CONGRATULATIONS”; FLASH 0 
910 IF SC>HS THEN LET HS=SC 
915 LET TS=TS+SC 

920 PRINT AT 11,12; PAPER 6i INK 2j"LAST SCO 
RE ";SC;AT 12,12;"HIGHEST SCORE "JHSJAT 13 
,12)“TOTAL SCORE ";TS)AT 15,2) FLASH l;"PRE 
SS ANY KEY FOR NEXT GAME" 

930 LET XS=INKEY*: IF X$«"“ THEN GO TO 930 
940 CLS : PRINT AT 11,125 INK 2; PAPER 6; FL 
ASH 1;“STANDBY"; FLASH 0: FOR X=5 TO 1 STEP - 
l: PRINT AT 17,155X5: FOR Y=1 TO 80: NEXT Y: 
NEXT X: FOR X=1 TO 49: LET I(X)=0: NEXT X: LE 
T SC=0: LET RR=60: LET XP=0: GO TO 725 
1000 REM ****USR DEF GRAPHICS 

1030 DATA 60,60,140,49,115,206,51,204,63,252, 
111,246,193,131,192,3 

1040 DATA 27,224,31,240,26,88,62,124,255,255, 
255,255,85,170,42,84 

1050 DATA 0,0,0,0,7,224,31,248,248,31,127,254 

, 0 , 0 , 0,0 

1060 DATA 0,0,63,252,240,15,191,253,0,0,255,2 
55,127,254,0,0 

1070 DATA 126,255,0,195,255,129,255,60 
1080 DATA 255,255,255,126,0,126,255,255,255,1 
26,0,126,255,255,255,126,0,126,255,255,255,0, 
0,0 

1090 DATA 0,82,24,124,62,24,74,0 

2000 LET X$=INKEY$: IF X*-“" THEN GO TO 2000 



Invaders 


279 


2010 PRINT CODE X*i" GO TO 2000 

3000 INPUT A,B,C*: PRINT AT 18,30J” “!AT A,B! 

C*i: IF SCREEN* <4,4)="0" THEN PRINT AT 18,3 

0;i 

3010 GO TO 3000 




280 


Mushroom Invasion 


All right. So you’ve dealt with the worst that the galaxies can throw up. 

The Space Invaders, the asteroid belts, the nightmare timewarp tunnels, 
the vampire cats — you’ve seen it all haven’t you? Don’t you believe it! 
Things can only get worse. This time around you are faced with a 
mindless, soulless, heartless fungus... the invasion of the mushrooms. 

It’s all over for Earth. The mushrooms already cover half the globe and 
they’re moving in for the final kill. You are the commander of the only 
surviving security cruiser, and your laser cannons are running low. Wait 
until you see the whites of their undersides and make every shot count. If 
they hit your ship you’re finished. 

1 CLS 

5 PAPER 0: BORDER 0 
8 

10 GO SUB 750 
20 GO SUB 2060 
30 GO SUB 2100 

40 PRINT BRIGHT 1; INK 1;AT x,y5 u nUR" 

45 IF y>27 THEN LET y=27 

50 IF INKEY*-"1" THEN GO SUB 4000 

60 IF INKEY*=“5“ THEN LET y=y-l 

70 IF INKEY*-“5" THEN PRINT AT x,y+3i" 

80 IF INKEY*="8** THEN LET y=y+l 
90 IF INKEY*-"8" THEN PRINT AT x,y-35" " 

100 IF INKEY*-" 1" THEN GO SUB 4000 
105 IF y<1 THEN LET y=l 

110 PRINT BRIGHT 15 INK 1;AT x,y \"nUR" 

120 IF ATTR (x-1,y)=2 OR ATTR (x-l,y+l)=2 OR 
ATTR < x-1,y+ 2)=2 THEN GO SUB 5000 
130 60 SUB 3000 

140 PRINT AT x,y! BRIGHT lj INK 15 "HUR* 

150 GO TO 40 

750 FOR m-0 TO 7: READ x: POKE USR u ti*+m,xl 
NEXT m 

760 FOR tn-0 TO 7: READ x: POKE USR “(/ u +m,x: 
NEXT ro 

770 FOR m-0 TO 7: READ x: POKE USR "/9"+m,x: 
NEXT m 








Mushroom Invasion 281 


780 FOR m=0 TO 7: READ x: POKE USR , 'S“+m,x: 
NEXT m 

995 FOR n=0 TO 7: READ x: POKE USR "F ,, + n,x: 
NEXT n 

996 FOR n=0 TO 7: READ x: POKE USR “C“+n,x: 
NEXT n 

1000 RETURN 

1020 DATA BIN 00000011,BIN 00000111,BIN 00001 
111,BIN 10101010,BIN 10101010,BIN 00001111,BI 
N 00000111,BIN 00000011 

1030 DATA BIN 11111111,BIN 11111111,BIN 11111 
111,BIN 10101010,BIN 10101010,BIN 11111111,BI 
N 11111111,BIN 11111111 

1040 DATA BIN 11000000,BIN 11100000,BIN 11110 
000,BIN 01010101,BIN 01010101,BIN 111 10000,BI 
N 11100000,BIN 11000000 

1045 DATA BIN 00011000,BIN 01111110,BIN 11111 

111, BIN 11111111,BIN 00111100,BIN 00011000,B 

IN 00011000,BIN 00011000 

2030 DATA 24,24,24,24,24,24,24,24 

2040 DATA BIN 10011001,BIN 01011010,BIN 01111 

110,BIN 00111100,BIN 00111100,BIN 01111110,BI 

N 01011010,BIN 10011001 

2050 RETURN 

2060 LET x=0: LET y=l: LET W-0: LET C=*0 
2070 RETURN 

2100 PRINT INK 65" THE EARTH IS BEING ATTACK 
ED BV A FLEET OF MINDLESS BUT DEADLY MUSHROO 
MS. AS ALWAYS, YOU ARE ITSSOLE DEFENDER.THE LE 
FT AND RIGHTCURSOR KEYS WILL SHIFT YOU ABOUT&c 
THE 1 KEY FIRES YOUR LASER.THE END IS INEVIT 
ABLE:IF YOU’RE HIT YOU’RE DEAD. BUT TRY AND N 
OTCH UP A MEAN SCORE BEFORE YOU GO." 

2102 PRINT TAB 9; INVERSE 1} INK 5;“ANY KEY T 
O PLAY“ 

2105 FOR k = i TO 128: BEEP .05,.5: PRINT INK 
2; “S “i : NEXT k 
2110 PAUSE 0: CLS 
2120 RETURN 

3000 LET W-INT <RND#29> 

3001 LET M=20 

3005 LET V=RND*3 

3010 PRINT AT M,Wj INK 2 1 u S u l PRINT AT M,W+V 



282 Mushroom Invasion 


i INK 2; “S m 

3012 BEEP .05,RND*30 

3013 INK 2: INK 1 

3013 POKE 23692,-1: PRINT AT 21,0’’ 

3018 PRINT AT x,y; INK 1 \*n<JR u 
3020 RETURN 

4000 PRINT BRIGHT lj INK 6JAT x+1,y+1!"A": R 
EM “F" is graphics F 

4010 IF ATTR < x + 2,y + 1)=2 THEN GO SUB 6000 
4020 BEEP .1,RND*12 
4060 RETURN 

5010 PRINT AT x,y; BRIGHT li INK 6 \ U CCC* 

5013 BEEP .5,-40: BEEP .5,6: BEEP .2,10: BEEP 
.05,-35 
5020 CLS 

5030 FOR v=l TO 71 BEEP .05,10-v: PRINT BRIG 
HT 1J INK 6;TAB 4;"YOU HAVE BEEN DESTROYED. 
YOUR SCORE IS " i C; ** . ANOTHER GAME? 

ANY KEY TO START": NEXT V 
5070 PAUSE 0: CLS 
5080 RETURN 

6000 PRINT AT x+2,y+1j INK 6;“C“ 

6001 LET C=C+1 
6010 RETURN 



Countabout 


283 


Kids and computers just don’t mix. Not if it’s your computer that is. 
They take up far too much valuable hacking time. However it has to be 
conceded that micros do have a role in the pedagogic process, and so it is 
not without some reluctance that we have included a selection of 
educational programs, of which this is one. This is for the very small, 
and has been designed to keep them quiet while you have an algorithm to 
work on, whilst at the same time teaching them the basics of counting. 

The program sets a series of counting problems from the numbers one to 
nine. You know, count the ships, flowers, cats, houses or whatever and 
— if the answer is correct—reward the little angels with ships moving, 
cats smiling, telephones ringing or the like. 


10 REN COUNTABOUT.H.WALWYN 

15 LET X=0: GO SUB 9000 
17 LET ZS=“ 

20 PAPER 5: BORDER 5: INK 0: CLS : PRINT "C 
OUNTABOUT" 

30 PRINT : PRINT “A counting game -for child 


ren aged 2-5" 

40 GO SUB 1000 

50 PRINT : PRINT “PRESS ANY KEY TO START PR 
OGRAM" 

60 LET K=RND: IF INKEY$=““ THEN GO TO 60 
70 CLS 

80 PRINT AT 0,0i FLASH 11“PLEASE PRESS ANY 
KEY" 

90 LET K=RND: IF INKEY$="“ THEN GO TO 90 
100 CLS 

110 LET Q=INT <(RND*9)+1) 

120 LET K=INT <<RND*5)+1> 

130 LET J=4: FOR 1 = 1 TO <3 

140 IF 1=4 OR 1=7 THEN LET J=4: 

150 GO SUB L(I) 

160 PRINT OVER 1;TAB J; 

170 IF X=1 THEN GO TO 200 
180 GO SUB L(K+9) 

190 GO TO 210 
200 GO SUB L(K+14) 




284 Countabout 


210 LET J=J+10: NEXT I 
220 IF X=1 THEN LET X=0: 60 TO 360 
240 PRINT AT 0,0! INK l;"H O W MANY '* i N 
* i ” ? " 

250 LET A*=INKEY$: IF A$="” THEN GO TO 250 
260 IF CODE A$<49 OR CODE A*>57 THEN GO TO 
250 

270 PRINT ^ INK 1;TAB 18;A$: FOR L=1 TO 100: 
NEXT L 

280 IF UAL A$=Q THEN CLS : GO TO 320 

290 IF UAL A«=(Q+1) OR UAL AS=(Q-1) THEN GO 

TO 330 

300 BEEP .6,.5: BEEP .6,-2: PRINT TAB 2; FLA 
SH l; BRIGHT l; PAPER 4; INK 7;“N 0,W R 0 N G 
A N S W E R I u 

310 GO SUB 5500: GO TO 230 

320 LET X=l: GO TO 130 

330 IF UAL A*=0 THEN GO TO 300 

340 BEEP .2,.5: PRINT INK 2; “ U E R Y N E A 

R L Y ! 11 

350 GO SUB 5500: GO TO 230 

360 GO SUB 5600: PRINT AT 2,9; BRIGHT 15 FLA 
SH l; PAPER 0; INK 7;“C 0 R R E C T“ 

370 IF Q=1 THEN PRINT Qj” “;N*<1 TO (LEN 
N$-2)): GO TO 390 
380 PRINT Q; " " ; N$ 

390 FOR F=1 TO 300: NEXT F: GO SUB 2000: GO 
TO 80 

1000 REM INSTRUCTIONS 

1010 PRINT : PRINT “There is no need to use t 
he" 

1020 PRINT “’ENTER KEY’ in this program." 

1030 PRINT : PRINT "Once the child knows wher 
e the numbers -from 1 to 9 are on the keyboa 
rd, " 5 

1050 PRINT "you can sit back and let the “5 
1060 PRINT "computer do a bit o-f teaching! 

1100 RETURN 

2000 PRINT AT 0,0! INK 2;TAB 20 
2010 GO TO D(Q) 

2100 PRINT B",," 5": RETURN 

2200 PRINT “ CED“ : PRINT "CEF": PRINT "GEE"'. R 

ETURN 



Countabout 285 


2300 

2400 

2300 

2600 

2700 

2800 

2900 

5000 

5010 

5020 

5500 

5600 


PRINT " C£D U ,, U £J",, n 6£P": 
PRINT * _ ,"4 B ",, 

PRINT “/(££" , , "iS£D u , , u <5££ u i 
PRINT "C£D" ,, “L£D",, a 6£P u i 

PRINT “ _" , , " /?" , , “ A " : 

PRINT “C£D“ ,, "L£J“ ,, "6£P U : 
PRINT "C£D U ,,“6£J“, , "G£F ": 
PRINT AT 4,0;: RETURN 
PRINT AT 10,0;: RETURN 
PRINT AT 16,0;: RETURN 
FOR L=1 TO 500: NEXT L 
PRINT AT 0,0; •• 


RETURN 

RETURN 

RETURN 

RETURN 

RETURN 

RETURN 

RETURN 


5610 FOR L=1 TO 3 
5615 PRINT " 

5620 NEXT L 
5625 RETURN 

6000 INK 0: LET N*="H 0 U S E S“: REM HOUSE D 
RAWING 

6001 PRINT OVER 1? INK 0;" -;Z*( TO 28);" 

TO 26) ; u " ; Z$ ( TO 25);"fl 

S";Z*< TO 24 );"B s B"; 

6002 RETURN 

6100 REM CATS 

6101 INK 2: LET N$=“C ATS" 

6110 PRINT OVER 1; INK 2;" <2 P" ; Z* < TO 27); 
“ Mil" ;Z*< TO 27) ; "=/Vi»?=" ;Z$< TO 26); 

6120 PRINT OVER 1; INK 2;" GUMP "J Z$ < TO 27); 
“ llll";z$< to 27) ; ■* ; 


6130 RETURN 

6200 REM TELEPHONE 

6210 INK 3: LET N$=“T ELEPHONES" 

6220 PRINT OVER 1 i "<?■■■/““ 5 Z* ( TO 27 ) J " IU “ 
iZ*l TO 27)i" (o)"!Z$( TO 28)i" 

6230 RETURN 
6300 REM BOATS 

6310 INK l: LET N*="S HIPS" 

6320 PRINT OVER 1;" ";" "; Z %( TO 29); INK 1 

; “_P RR U ;z*( TO 27) ; "/v: : return 

6400 REI-. LOWER 

6410 INK 4: LET N$="F LOWERS" 

6420 PRINT OVER 1;"/V1 0";Z$< TO 28)5 INK 45" 

7 “; Z* < TO 29);“ 7 ";Z*< TO 29);" U "5: RETU 
RN 









286 Countabout 


7000 REM HOUSE CORRECT 
7005 BEEP .5,10-1 

7010 PRINT OVER IS" " i Z* ( TO 28)5" 

jz*< to 26);" < 3 Mc/uc/ap “ ;z*< to 25 ) u ;z* 

( TO 25); “MMSFFMM" i: RETURN 

7100 BEEP .5,10-1: PRINT OVER li M P <J";Z*( 
TO 28);" HK " ;Z*< TO 27) i u =H6F0= 11 ; Z* ( TO 27)5 
TO 28) 5 "■■■■" i Z* < TO 28)5" " i : 

RETURN 

7200 REM TELEPHONE CORRECT 

7210 PRINT OVER 1 i " RING" ; Z% ( TO 28)i"<?lll 

P-\ Z*< TO 27)! u imn “;Z$( TO 28) 5 “<0)”;z*< TO 
29);- '*; 

7220 BEEP .5,1.9: PAUSE 5: BEEP .5,1.9: PAUSE 
30: RETURN 
7300 REM BOATS 
7305 BEEP .5,10-1 

7310 PRINT OVER is" 11 i " " l Z% < TO 29); INK 1 

; “rr” i z*< to 27) ; "A»: ::::<?"; : return 

7320 PRINT “ "iZ*( TO 27)iZ*( TO 27I;Z$ 

( TO 27);: RETURN 

7400 REM FLOWER 

7405 BEEP .5,10-1 

7410 PRINT OVER 1S "";Z*( TO 29) J" T "\Z%( 
TO 29)5“ F "JZ$< TO 29);“ “;: RETURN 

8999 RETURN 

9000 REM INITIALISE ARRAYS,GRAPHICS 

9010 RESTORE : DIM L(19): FOR F=1 TO 19: READ 
L(F): NEXT F: DATA 5000,5000,5000,5010,5010, 
5010,5020,5020,5020 

9020 DATA 6000,6100,6200,6300,6400,7000,7100, 
7200,7300,7400 

9030 DIM D<9): FOR F=1 TO 9: READ D < F) : NEXT 
F: DATA 2100,2200,2300,2400,2500,2600,2700,28 
00,2900 

9040 RESTORE 9900: FOR F=0 TO 7: READ A,B 

9050 POKE USR ("A")+ F,A 

9060 POKE USR ("B")+F,128 

9070 POKE USR ("C")+ F,B 

9080 NEXT F 

9090 FOR F =0 TO 7: READ A: POKE USR ("D")+ F,A 
9100 POKE USR <"E“)+ F,0: IF F = 3 THEN POKE US 
R <“E“)+F,255 

9110 READ A: POKE USR ("F")+F,A 




Countabout 287 


9120 

9130 

9140 

9150 

9160 

9170 

9180 

9190 

9200 

9210 

9220 

9230 

9240 

9250 

9260 

9270 

9280 

9290 

9400 

9490 

9500 

9510 

9520 

9530 

9540 

9550 

9900 


READ A: POKE USR ( " G " ) + F, A 
NEXT F 

FOR F=0 TO 7 

POKE USR ( “ I " )+ F,128 

POKE USR ( M H“)+ F, 0 

POKE USR <“J")+F,16 

READ A: POKE USR (‘'K")+F,A 

POKE USR < " L " ) + F , 8 

POKE USR ( M M")+ F,1 

POKE USR <"N")+F,(2 A (7-F))-1 

POKE USR ( M 0'')+F, 255-( (2 A (F) )-1 ) 

POKE USR <"P")+F,255-<<2 A (7-F))-1) 

POKE USR ("G") +F, ( (2~(F) )-1) 

POKE USR ( “ R " ) + F , 0 

READ A: POKE USR ("S")+F,A 

POKE USR <"T")+F,16 

NEXT F 

FOR F=0 TO 7: READ A: POKE USR <“U")+F,A 
NEXT F 

POKE USR ( "H") ,255 
POKE USR ( " I " ) ,255 
POKE USR <"J“)+3,240 
POKE USR ("L")+3,15 
POKE USR ( “ M“),255 
POKE USR ("N"),255 

POKE USF} ( "R" ) , 255: POKE USR <"R“) +1,255 
DATA 1,0,2,0,4,0,8,3,16,4,32,8,64,8,128, 


9910 DATA 0,16,8,0,16,8,0,32,4,192,192,3,32,0 
,0,16,0,0,16,0,0,16,0,0 

9920 DATA 0,213,0,171,0,213,15,171,8,213,8,17 
1,8,213,3,171 

9930 DATA 0,60,126,126,126,126,60,0 
9999 RETURN 



Robert Erskine & Humphrey Walwyn with Paul Stanley and Michael Bews 

Bumper Book of Programs for the Sinclair ZX Spectrum £4.95 

Robert Erskine & Humphrey Walwyn with Paul Stanley and Michael Bews 

Bumper Book of Programs for the BBC Micro £4.95 

Robert Erskine & Humphrey Walwyn with Paul Stanley and Michael Bews 

Bumper Book of Progams for the Dragon 32 £4.95 

Robert Erskine & Humphrey Walwyn with Paul Stanley and Michael Bews 

Bumper Book of Programs for the Oric 1 £4.95 

Ian Adamson 

The Definitive Companion to the Oric 1 £4.95 

Geoff Wheelwright 

The Definitive Companion to the BBC Micro £4.95 
Jean Frost 

Instant Arcade Games for the Sinclair ZX Spectrum £3.95 


Jean Frost 

Instant Arcade Games for the BBC Micro £3.95 
Jean Frost 

Instant Arcade Games for the Dragon 32 £3.95 
J. J. Clessa 

Micropuzzles £2.95 



required and fill in the torn 


Nan 

(Block letters pie 


Send to Pan Books (CS Department), PO Box 40, Basingstoke, Har 



pyjt 




60 programs for your 
Sinclair ZX Spectrum 

A massive software library for the price of 
a single cassette. Explosive games, 

dynamic graphics and invaluable utilities, 
this specially commissioned collection 
takes BASIC to the limits and beyond. 

Four of the country’s best-selling software 
writers have pooled their talents to bury 
programming cliches and exploit your 
micro’s potential to the full. 

Whether you are a games player or a more 
serious user, here’s the book to make 
your micro work for you. 


0330 28260 3 


U.K. £4.95